【发布时间】:2012-12-16 04:13:05
【问题描述】:
我有一个连接到访问数据库的小程序,我想做的是通过编辑表单更新(编辑)选定的记录。当我执行我的代码时,我得到了这个错误:
System.Data.OleDb.OleDbException was unhandled
Message=Syntax error (missing operator) in query expression '5346 S. Eubank blvd'.
Source=Microsoft Access Database Engine
ErrorCode=-2147217900
不用说,是地址字段..
这是我的代码块:
private void saveChangeBtn_Click(object sender, EventArgs e)
{
Customer.SetCustID(Convert.ToInt32(editIdTB.Text));
Customer.SetFirstName(editFirstNameTB.Text);
Customer.SetLastName(editFirstNameTB.Text);
Customer.SetAddress(editAddressTB.Text);
Customer.SetPhoneNum(editPhoneTB.Text);
Customer.SetEmail(editEmailTB.Text);
using (OleDbConnection connect = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand();
connect.Open();
cmd.Connection = connect;
cmd.CommandText = "UPDATE Customers SET [Customer ID]=" + Customer.GetCustId() +
", [First Name]=" + Customer.GetFirstName() +
", [Last Name]=" + Customer.GetLastName() +
", [Address]=" + Customer.GetAddress() +
", [Phone Number]=" + Customer.GetPhoneNum() +
", [Email Address]=" + Customer.GetEmailAddress() +
", WHERE [Customer ID]=" + editIdTB.Text + "";
cmd.ExecuteNonQuery();
connect.Close();
MessageBox.Show("Changes made successfully!", "Success!", MessageBoxButtons.OK);
}
this.Close();
}
【问题讨论】:
-
WHERE 前应该有逗号吗?您是否允许用户更改客户 ID?似乎您不想这样做,或者如果是这样,请使用不同的主键。如果您将查询简化为仅更新地址并跳过其余部分,您仍然会遇到相同的错误吗?
-
将您的 cmd.CommandText 回显到页面或日志文件,这样您就可以看到您正在尝试执行的内容。
-
我只做了地址并出现此错误: System.Data.OleDb.OleDbException 未处理 Message=Syntax error in string in string in query expression ''5346 S. Eubank blvd WHERE [Customer ID]=3 '。 Source=Microsoft Access 数据库引擎 ErrorCode=-2147217900 StackTrace: at
-
StackTrace:在 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) 在 System.Data.OleDb.OleDbCommand 的 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)。 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior 行为,Object&executeResult) 处的 ExecuteCommandText(Object&executeResult) System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior,String 方法)
-
在这些愚蠢的盒子里发帖对我来说太长了
标签: c# ms-access oledb oledbcommand executenonquery