Question

Veuillez consulter le code suivant :

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();
}

Je reçois toujours 0 au lieu d'une valeur entière.Lors du débogage, je prends la requête et l'exécute dans MS ACCESS 2013, cela me donne un résultat correct.Je ne comprends pas quel est le problème.

Était-ce utile?

La solution

Vous êtes dérangé par la différence de caractères génériques LIKE entre les requêtes exécutées dans Access lui-même et les requêtes exécutées à partir d'une application externe.

Lorsque vous exécutez une requête depuis Access lui-même, vous devez utiliser l’astérisque comme caractère générique : LIKE 'RT*'.

Lorsque vous exécutez une requête à partir d'une application externe (comme votre application C#), vous devez utiliser le signe de pourcentage comme caractère générique : LIKE 'RT%'.

Autres conseils

Essayer ExecuteScalar() méthode

Remplacez ceci :

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

Avec ça:

 ttCnt = Convert.ToInt32(qtc.ExecuteScalar());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top