无法执行插入,删除或更新?

时间:2014-12-15 16:57:32

标签: c# visual-studio-2012

我的查询似乎是正确的,但为什么会发生这种情况?

enter image description here

        OleDbConnection con = new OleDbConnection();

        con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Sparrow vivek\Documents\Billing.accdb";
        con.Open();
        DateTime a = Convert.ToDateTime(label2.Text);
        String query = "INSERT INTO balancesheet (BillNumber,CusName,Date,Amount) values (?,?,?,?)";
        OleDbCommand cmd = new OleDbCommand(query, con);
        cmd.Parameters.AddWithValue("?",label3.Text);
        cmd.Parameters.AddWithValue("?", label4.Text);
        cmd.Parameters.AddWithValue("?", a.ToString("yyyy-MM-dd"));
        cmd.Parameters.AddWithValue("?", label6.Text);
        cmd.ExecuteNonQuery();
        con.Close();

1 个答案:

答案 0 :(得分:3)

您的查询包含reserved keyword:日期。要使用它,您需要在该名称周围使用方括号

String query = "INSERT INTO balancesheet (BillNumber,CusName,[Date],Amount) values (?,?,?,?)";

强烈建议避免使用这些名称。如果仍然可以尽快更改该名称。

现在让我们检查一下AddWithValue列表。在此方法中,参数的数据类型由您传递的值自动确定。您将每个值传递给string类型的参数集合。但是,您的数据库字段可能不希望将字符串作为值。例如,日期,金额似乎需要日期时间和数字

cmd.Parameters.AddWithValue("?",label3.Text);
cmd.Parameters.AddWithValue("?", label4.Text);
cmd.Parameters.AddWithValue("?", a); 
cmd.Parameters.AddWithValue("?", Convert.ToDecimal(label6.Text));