插入语句C#OleDb时出现语法错误

时间:2015-07-19 13:44:59

标签: c# database oledb

我正在使用C#OleDb创建订单表单,并且尝试将订单表单中的组合框的大小值放入数据库时​​出现问题。 
导致问题的代码如下:




  private void btn_Save_Click(object sender,EventArgs e)
 {
尝试
 {
 connection.Open();
 OleDbCommand command = new OleDbCommand();
 command.Connection = connection;
 command.CommandText =“插入OrderForm(Size)值('”+ sizeBox.Text +“')”;
 command.ExecuteNonQuery();
 MessageBox.Show(“订单插入数据库”);
的Connection.close();
 }
 catch(Exception ex)
 {
 MessageBox.Show(“Error”+ ex);
 }
 }
  




这是导致我出现问题的唯一一段代码,我将它与我的其他commandText代码行进行了比较我已经注释掉了,以确保语法正确,看起来对我来说没问题。我还检查过以确保commandText代码中列出的字段名称和实际数据库中的字段是正确的。任何有关此问题的帮助将不胜感激。干杯





编辑:语法代码给我的错误





1 个答案:

答案 0 :(得分:3)

SIZE是一个保留字。除非将其括在方括号中,否则不能将其用作字段名称,因此您的代码应写为

private void btn_Save_Click(object sender, EventArgs e)
{
    try
    {
        string sqlText = "insert into OrderForm([Size]) values (?)";
        using(OleDbConnection connection = new OleDbConnection(.....))
        using(OleDbCommand command = new OleDbCommand(sqlText, connection))
        {
            connection.Open();
            command.Parameters.Add("@p1", OleDbType.VarWChar).Value = sizeBox.Text;
            int rowsAdded = command.ExecuteNonQuery();
            if(rowsAdded > 0) 
                MessageBox.Show("Order Inserted into Database");
            else
                MessageBox.Show("No Order added to the Database");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Error " + ex.Message);
    }
}

将SIZE括在方括号中的部分我改变了一些事情。

首先每次到达数据库时,都会在连接和其他一次性对象周围使用using语句。这样可以避免在不需要内存泄漏和昂贵的资源利用时使用。

第二次查询被参数化,这样就可以更清楚地了解你在做什么,避免sql注入以及正确解析值的问题。