System.Data.OleDb.OleDbException:条件表达式中的数据类型不匹配

时间:2013-12-06 06:31:49

标签: c# sql .net ms-access oledb

这是我的代码:

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"]);
}

这是它给我的错误:

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;

我知道Stack Overflow上也有another question about the same issue,但它似乎没有解决我的问题(它可以解决你的问题,所以我放了一个链接)。

1 个答案:

答案 0 :(得分:5)

请了解using blocks所有易处理文件,包括数据库连接,命令和读者。

您的代码容易受sql injection攻击,您可能希望通过使用参数来解决此问题。

最后,我怀疑数据库中的id字段是整数类型,因此在值周围使用引号是错误的。但请阅读参数而不是修复它。无论如何,参数将摆脱这个问题。