OleDb的C#更新错误 [英] C# Update error with OleDb
问题描述
大家好,
我是编程新手,已经开始了我的第一个C#项目(这是非常基础的),但是对于我遇到的错误,我只需要一点帮助.
我有一个C#前端和一个MS Access 2003后端(当我变得更高级时,我将使用SQL.)
当我尝试更新记录时,出现一条消息:查询表达式"ContactId ="中的语法错误{缺少运算符)
我的代码如下:
Hi all,
I am new to programming, and I have started my first C# project (which is very basic), but I just need a little help with an error I am getting.
I have a C# front end and a MS Access 2003 back end (I will use SQL when I get a little more advanced.)
When I try updating a record, I get a message saying: Syntax error {missing operator) in query expression ''ContactId =''
My code is as follows:
private void btnSave_Click(object sender, EventArgs e)
{
OleDbConnection conn = new OleDbConnection();
conn.ConnectionString = "PROVIDER=Microsoft.Jet.OleDb.4.0;Data Source=C:\\Users\\Antoine\\Documents\\Visual Studio 2010\\Projects\\myProject\\imyProject\\bin\\Debug\\myProject.mdb";
conn.Open();
string strUpdate = "UPDATE Contact SET ContactLastName = ''" + txtLastName.Text + "'' WHERE ContactId = " + txtContactId.Text + "";
OleDbCommand cmd = new OleDbCommand(strUpdate, conn);
cmd.ExecuteNonQuery();
MessageBox.Show("Record updated", "Contacts", MessageBoxButtons.OK);
}
我知道这将是非常简单的事情,而且我敢肯定会有更有效的编码方法,但是我在学习中很有趣.
预先感谢您的帮助.
安东尼
[edit]已添加代码块-OriginalGriff [/edit]
[edit2]已纠正缩进-OriginalGriff [/edit2]
It will be something very simple, I know, and I''m sure there''s more efficient coding methods, but I''m having fun learning.
Thanks in advance for your help.
Antony
[edit]Code block added - OriginalGriff[/edit]
[edit2]Indentation corrected - OriginalGriff[/edit2]
推荐答案
尝试此操作
string strUpdate = "UPDATE Contact SET ContactLastName = ''" + txtLastName.Text + "'' WHERE ContactId = " + txtContactId.Text;
-验证ContactLastName,ContactId是否为有效格式
-请阅读此教程-http://msdn.microsoft.com/zh-cn/library/aa288436(v = vs.71.aspx
try this
string strUpdate = "UPDATE Contact SET ContactLastName = ''" + txtLastName.Text + "'' WHERE ContactId = " + txtContactId.Text;
- verify ContactLastName,ContactId is valid format
- Read this Tutorials - http://msdn.microsoft.com/en-us/library/aa288436(v=vs.71.aspx
好像ContactId
不是(数字).检查表是否为String数据类型.
Seems likeContactId
is notNumeric
(Number) in the table. Check the table if it is String data type.
如果您的文本框中有有效的联系人ID,并且没有特殊字符,则UPDATE命令看起来正常字符-引起问题的一个空格就好了.我建议您还是使用参数化查询:它们更安全,并且使您的代码更易于阅读:
The UPDATE command looks ok, if there is a valid Contact ID in your text box, and no special characters - a single space is all it would take to cause a problem. I would suggest that you use Parametrized queries anyway: they are a lot safer, and make your code easier to read:
string strUpdate = "UPDATE Contact SET ContactLastName = @CLN WHERE ContactId = @CID";
OleDbCommand cmd = new OleDbCommand(strUpdate, conn);
cmd.Parameters.AddWithValue("@CLN", txtLastName.Text);
cmd.Parameters.AddWithValue("@CID", txtContactId.Text);
这很可能会消除您的错误!
This may well get rid of your error!
这篇关于OleDb的C#更新错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!