这是我的代码:
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,但它似乎没有解决我的问题(它可以解决你的问题,所以我放了一个链接)。
答案 0 :(得分:5)
请了解using blocks所有易处理文件,包括数据库连接,命令和读者。
您的代码容易受sql injection攻击,您可能希望通过使用参数来解决此问题。
最后,我怀疑数据库中的id字段是整数类型,因此在值周围使用引号是错误的。但请阅读参数而不是修复它。无论如何,参数将摆脱这个问题。