[英]How to update true/false field in access using c#?
我的代码是:
private void setGrant()
{
cmd.Connection = con;
con.Open();
cmd.CommandText = "SELECT grant FROM UsrDet WHERE usrname = '" + this.usrname.Text + "' AND usrpasswd = '" + this.passwd.Text +"';";
using (OleDbDataReader dr = cmd.ExecuteReader())
{
while(dr.Read())
{
bool permsn = Convert.ToBoolean(dr["grant"]);
if (permsn == false)
{
permsn = true;
OleDbCommand c1 = new OleDbCommand("UPDATE UsrDet SET grant = '" + permsn.ToString() + "' WHERE usrname = '" + this.usrname.Text + "';", con);
c1.ExecuteNonQuery();
}
else
{
MessageBox.Show("Access Denied.");
}
}
}
}
执行时显示异常:
System.Data.dll中发生了类型为'System.Data.OleDb.OleDbException'的未处理异常
附加信息:UPDATE语句中的语法错误。
我的问题是我想根据访问数据库中的先前值来更新Grant(真/假字段)中的值。
我猜您必须删除引号,因为它们会使它成为文本变量。 另外,由于grant
是保留关键字,因此请在方括号中加上括号:
OleDbCommand c1 = new OleDbCommand("UPDATE UsrDet SET [grant] = " + permsn + " WHERE usrname = '" + this.usrname.Text + "';", con);
我建议您尽管使用参数。
OleDbCommand c1 = new OleDbCommand("UPDATE UsrDet SET [grant] = ? WHERE usrname = ?;", con);
c1.Parameters.Add("?", permsn);
c1.Parameters.Add("?", this.usrname.Text);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.