带有更新查询的 OleDbCommand 导致 OleDbException

Posted

技术标签:

【中文标题】带有更新查询的 OleDbCommand 导致 OleDbException【英文标题】:OleDbCommand with Update query causes OleDbException 【发布时间】:2016-04-16 01:30:55 【问题描述】:

我在调试程序的时候发现了这个问题:

System.Data.dll 中出现“System.Data.OleDb.OleDbException”类型的未处理异常

附加信息:UPDATE 语句中的语法错误。

    cnx.Open();
    OleDbCommand cmd = new OleDbCommand();
    cmd.Connection = cnx;
    string idcarte = textBox1.Text;
    string name = textBox2.Text;
    string phone = textBox3.Text;
    string area = textBox4.Text;
    string date = textBox5.Text;
    string idcartecom = comboBox2.Text;
    cmd.CommandText = "Update Family set IDCarte=@idcarte,Name=@name,Phone=@phone,Area=@area,Date=@date where IDCarte=@idcartecom";
    cmd.Parameters.AddWithValue("@idcarte", idcarte);
    cmd.Parameters.AddWithValue("@name", name);
    cmd.Parameters.AddWithValue("@phone", phone);
    cmd.Parameters.AddWithValue("@area", area);
    cmd.Parameters.AddWithValue("@date", date);
    cmd.Parameters.AddWithValue("@idcartecom", idcartecom);
    cmd.ExecuteNonQuery();
    cnx.Close();

如果有解决方案,我将不胜感激。

【问题讨论】:

这里的 sql 看起来不错。你能确认族表和所有列都存在吗? 【参考方案1】:

您可以将字段 Date 放在方括号中,因为它是 OLE DB 中的保留字:

cmd.CommandText = "UPDATE Family SET IDCarte=@idcarte,Name=@name,Phone=@phone,Area=@area,[Date]=@date WHERE IDCarte=@idcartecom";

【讨论】:

以上是关于带有更新查询的 OleDbCommand 导致 OleDbException的主要内容,如果未能解决你的问题,请参考以下文章

OleDbCommand 不会更新 MS Access 数据库,不会引发错误

OleDbCommand 在有效的命令文本上抛出异常

将 DateTime 值作为参数传递给 OleDbCommand

asp.net oledbcommand 返回所有行

为啥 OleDbCommand 和 OleDbType.Date 不起作用,并且没有错误?

EXISTS 子查询导致错误 1064