-2

I am getting this error while trying to update but I am not able to find any issue in update statement.

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)));


June7
  • 19,874
  • 8
  • 24
  • 34
  • 3
    And why are you converting everything to string ? Are all fields in the database strings, too ? – Selvin Jul 06 '20 at 15:06
  • I agree With @Selvin, you should keep the data type as is in case it is compatible with database fields. – Mozart Jul 06 '20 at 15:11
  • 3
    OleDBParameters are positional - you must add them in the same order that they are introduced. Ditto on the string conversions - but why convert TextBox.Text? What type do you think text is? Also, the VisualStudio tag is not needed - the tags include some text to provide usage guidance – Ňɏssa Pøngjǣrdenlarp Jul 06 '20 at 15:21

1 Answers1

3

Conversion to string as well as out of order parameters may eventually cause a "data type mismatch" error or simply failure to execute (OleDbCommand parameters order and priority) but syntax error is most likely caused by use of Date as a field name. Date is a reserved word (intrinsic function). It even causes error with Execute command in Access VBA. Either rename the field or enclose in [ ] to define as field name: [Date]=@date.

June7
  • 19,874
  • 8
  • 24
  • 34