LIKE-Abfrage in einer Access-Datenbank über C # gibt immer COUNT (*) von 0 zurück
-
21-12-2019 - |
Frage
Bitte schauen Sie sich den folgenden Code an:
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();
}
Ich erhalte immer die Zählung als 0 anstelle eines ganzzahligen Werts.Beim Debuggen nehme ich die Abfrage entgegen und führe sie in MS ACCESS 2013 aus.Sie liefert mir das korrekte Ergebnis.Ich verstehe nicht, worum es geht.
Lösung
Sie werden durch den Unterschied in ÄHNLICHEN Platzhalterzeichen zwischen Abfragen, die in Access selbst ausgeführt werden, und Abfragen, die von einer externen Anwendung ausgeführt werden, gestolpert.
Wenn Sie eine Abfrage in Access selbst ausführen, müssen Sie das Sternchen als Platzhalterzeichen verwenden: LIKE 'RT*'
.
Wenn Sie eine Abfrage von einer externen Anwendung (wie Ihrer C # -App) ausführen, müssen Sie das Prozentzeichen als Platzhalterzeichen verwenden: LIKE 'RT%'
.
Andere Tipps
Versuchen Sie die generationspflichtige Methode
Ersetzen Sie dies:
generasacodicetagpre.mit diesem:
generasacodicetagpre.