尝试更新时出现此错误,但是在更新语句中找不到任何问题。
str = "UPDATE BillTable SET Bill_No = @billno, Bill_Year = @billYear, Voucher_No= @voucher, Date= @date, Group_ID= @groupname, Vendor_Id= @vendorname, Amount= @amount WHERE ID= @billID";
cmd = new OleDbCommand(str, cn);
cmd.Parameters.Add(new OleDbParameter("@billID", Convert.ToString(inovidid)));
cmd.Parameters.Add(new OleDbParameter("@billYear", Convert.ToString(fylabel.Text)));
cmd.Parameters.Add(new OleDbParameter("@billno", Convert.ToString(billno.Text)));
cmd.Parameters.Add(new OleDbParameter("@voucher", Convert.ToString(voucher.Text)));
cmd.Parameters.Add(new OleDbParameter("@date", Convert.ToString(DateTimePicker1.Text)));
cmd.Parameters.Add(new OleDbParameter("@groupname", Convert.ToString(groupidDB)));
cmd.Parameters.Add(new OleDbParameter("@vendorname", Convert.ToString(vendoridDB)));
cmd.Parameters.Add(new OleDbParameter("@amount", Convert.ToString(amount.Text)));
答案 0 :(得分:3)
转换为字符串以及乱序参数最终可能会导致“数据类型不匹配”错误或仅仅是执行失败(OleDbCommand parameters order and priority),但是语法错误很可能是由于使用Date作为字段名称引起的。日期是保留字(内部功能)。甚至在Access VBA中使用Execute命令会导致错误。重命名该字段或将其括在[]中以定义为字段名称:[Date]=@date
。