繁体   English   中英

如何使用C#更新访问中的true / false字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM