UPDATE中的语法错误

时间:2015-04-21 21:48:28

标签: c# sql

我有"(UPDATE语句中的语法错误)"当我通过c#

更新访问数据库中的记录时
string constring = @"Provider=Microsoft.ACE.OLEDB.12.0; Data Source=E:\C#\شغل\Host-CO\Host-CO\bin\Debug\hostco.accdb";
        string Query = "update host set رقم المريضه='" + رقم_المريضهTextBox.Text + "',المبلغ المسترد='" + المبلغ_المستردTextBox.Text + "',المبلغ='" + المبلغTextBox.Text + "',التاريخ='" + التاريخDateTimePicker.Value.ToShortDateString() + "'where الأسم='" + textBox1.Text + "';";
        OleDbConnection con = new OleDbConnection(constring);
        OleDbCommand cmd = new OleDbCommand(Query, con);
        try
        {
            con.Open();
            cmd.ExecuteNonQuery();
            MessageBox.Show("Data Updated");
            con.Close();
        }

1 个答案:

答案 0 :(得分:0)

很难说出错误到底在哪里,特别是对于所有那些非ASCII字符。正如OldProgrammer所说,调试它的一种可能性是在变量的初始化之下放置一个断点并检查串联的结果 - 这个结果可以在你的数据库环境中测试,也许你得到更精确的错误信息。

但正如Marc Gravell所说,参数一切都会好得多。您的陈述可以写成如下(我没有使用您的确切查询,因为我在编辑环境中使用不同方向流的文本时遇到一些困难):

string Query = "update host set [field1] = ?, [field2] = ?";

OleDbConnection con = new OleDbConnection(constring);
OleDbCommand cmd = new OleDbCommand(Query, con);

cmd.Parameters.Add("field1", OleDbType.VarWChar).Value = field1TextBox.Text;
cmd.Parameters.Add("field2", OleDbType.VarWChar).Value = field2TextBox.Text;

try {
    con.Open();
    cmd.ExecuteNonQuery();
    MessageBox.Show("Data Updated");
    con.Close();
}

我添加了#34; [...]"字段名称周围,因为字段名称​​中的非ACSII字符可能如果不进行转义会导致麻烦。有关详细信息,请参阅: