System.Daten.OleDb.OleDbException: Data type mismatch in criteria expression
Dies ist mein code:
OleDbCommand Cmd = new OleDbCommand();
Cmd.Connection = MyConn;
Cmd.CommandText = "SELECT * FROM catalogue WHERE id = '" + questionid + "'";
OleDbDataReader read = Cmd.ExecuteReader();
int id = 0;
while (read.Read())
{
id = Convert.ToInt32(read["id"]);
}
Hier der Fehler gibt es mir:
Line 27: Cmd.CommandText = "SELECT * FROM catalogue WHERE id = '" + questionid + "'";
Line 28:
Line 29: OleDbDataReader read = Cmd.ExecuteReader(); //The error is here
Line 30:
Line 31: int id = 0;
Ich weiß, es gibt auch eine andere Frage zu dem gleichen Problem auf Stack Overflow, aber es scheint nicht um mein problem zu lösen (es kann lösen Sie, so dass ich einen link setzen).
- könnten Sie klarstellen, welche Linie wirft er die exception? der code scheint in Ordnung zu sein.
- Ist
questionid
undid
imcatalogue
gleiche/gleichwertige Datentyp. Wenn so stellen Sie sicher, questionid ist nicht null. Schöner Punkt von @nvoigt, sollten Sie die Verwendung von Parametern
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bitte erfahren Sie mehr über mit Hilfe von Bausteinen für alle Ihre disposibles, beinhaltet, dass die Datenbank-connection -, command-und-Leser.
Dein code ist anfällig für sql-injection, möchten Sie vielleicht zu beheben, die durch die Verwendung von Parametern.
Schließlich vermute ich, dass dein id-Feld in der Datenbank ist vom Typ integer, so dass die Verwendung von Anführungszeichen um den Wert, ist ein Fehler. Aber bitte Lesen Sie bis auf den Parameter statt der Festsetzung. Parameter loswerden, dass problem sowieso.
SQL Server query
habe ich nicht erfahren genug, mit OleDb-aber sein Verhalten ist ein wenig ärgerlich.