我的查询似乎是正确的,但为什么会发生这种情况?
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();
最佳答案
您的查询包含 reserved keyword : 日期。要使用它,您需要在该名称周围使用方括号
String query = "INSERT INTO balancesheet (BillNumber,CusName,[Date],Amount) values (?,?,?,?)";
强烈建议避免使用这些名称。如果仍然可能,请尽快更改该名称。
现在让我们检查一下 AddWithValue 列表。在此方法中,参数的数据类型由您传递的值自动确定。您将每个值传递给字符串类型的参数集合。但您的数据库字段可能不需要字符串作为值。例如日期,金额似乎需要日期时间和数字
cmd.Parameters.AddWithValue("?",label3.Text);
cmd.Parameters.AddWithValue("?", label4.Text);
cmd.Parameters.AddWithValue("?", a);
cmd.Parameters.AddWithValue("?", Convert.ToDecimal(label6.Text));
关于c# - 无法执行插入、删除或更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489119/