Domanda

Si prega di esaminare il seguente codice:

using (OleDbConnection openCon = new OleDbConnection(ConfigurationManager.AppSettings["AccessConnectioString"]))
{
                openCon.Open();
                string tc = string.Empty;
                string ttc = string.Empty;
                if (!string.IsNullOrEmpty(QSetId))
                {
                    tc = "select count(*) as [Count] from ABC where QSetId = @qSetId and TText like 'RT*'";
                }
                else
                {
                    tc = "select count(*) as [Count] from PQR where TText like 'RT*'";
                }
                using (OleDbCommand qtc= new OleDbCommand(tc))
                {
                    qtc.Connection = openCon;
                    if (!string.IsNullOrEmpty(QSetId))
                        qtc.Parameters.Add("@qSetId", OleDbType.VarChar).Value = QSetId;
                    OleDbDataReader dr1 = qtc.ExecuteReader();
                    while (dr1.Read())
                    {
                        ttCnt = (int)dr1["Count"];
                    }
                }

                openCon.Close();
}
.

Sto sempre contando come 0 invece di qualche valore intero.Durante il debug, prendo la query ed esegui in MS Access 2013, mi dà il risultato corretto.Non sto ottenendo qual è il problema.

È stato utile?

Soluzione

Si tira inciampati dalla differenza in caratteri jolly come le query eseguite nell'accesso stesso e le query eseguono da un'applicazione esterna.

Quando si esegue una query dall'interno dell'accesso stesso è necessario utilizzare l'asterisco come carattere jolly: LIKE 'RT*'.

Quando si esegue una query da un'applicazione esterna (come la tua app C #) è necessario utilizzare il segno percentuale come carattere jolly: LIKE 'RT%'.

Altri suggerimenti

Prova il metodo ExecuteScalar()

Sostituisci questo:

 OleDbDataReader dr1 = qtc.ExecuteReader();
 while (dr1.Read())
 {
    ttCnt = (int)dr1["Count"];
 }
.

Con questo:

 ttCnt = Convert.ToInt32(qtc.ExecuteScalar());
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top