我有这套命令。
using (conn)
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT ID FROM User WHERE UserPassword= '@oldpassword'", conn);
cmd.Parameters.AddWithValue("@oldpassword", currentPassword);
OleDbDataReader reader = cmd.ExecuteReader();
reader.Read();
int userID = reader.GetInt32(0);
}
我的SQL语句是否正确?
答案 0 :(得分:0)
OLE DB .NET提供程序不支持将参数传递给SQL语句的命名参数
因此,您需要从查询中删除单引号,并使用?
代替命名参数。
OleDbCommand cmd = new OleDbCommand("SELECT ID FROM [User] WHERE UserPassword= ?", conn);
cmd.Parameters.Add(currentPassword);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
int userID = reader.GetInt32(0);
}
答案 1 :(得分:0)
如果不知道你得到的确切错误,我相信这是正确的代码:
using (conn)
{
conn.Open();
OleDbCommand cmd = new OleDbCommand("SELECT ID FROM [User] WHERE UserPassword = ?", conn);
cmd.Parameters.AddWithValue("@oldpassword", currentPassword);
OleDbDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
IdLabel.Text = reader.GetInt32(0).ToString();
}
}
在方括号之间指定表格,因为User
是保留字并使用问号(不包含引号)作为变量占位符。
如果要在using语句之外使用userID
,则需要在该语句之上声明它。