查询表达式'05 -04-2014 AM 12:00:00'C#中的语法错误(缺少运算符)?

时间:2014-04-09 05:45:21

标签: c# sql

AM尝试更新该查询中的日期我在UPDATE语句中收到此错误语法错误。这是我的代码

Updated Code

OleDbCommand top = new OleDbCommand(
         "UPDATE NewInvoice_1 SET (" +
         "Terms=?, [InvoiceDate]=?, OurQuote=?," +
         "SalesPerson=?, CustomerName=?, OrderNumber=?," +
         "InvoiceAddress=?, DeliveryAddress=?," +
         "WholeDiscountP=?, WholeDiscountA=?, ShippingP=?, ShippingA=?," +
         "Price=?, Discount=?, Tax=?," +
         "Shipping=?, GrandTotal=?, TaxforDisc=?, DiscountType=?," +
         "ShippingBy=?, ShipReferenceNo=?, IsInsured=?, Notes=?," +
         "[DueDate]=?, AmountinWords=? ) WHERE InvoiceId=?", conn);


        top.Parameters.AddWithValue("?", CBL_Terms.EditValue.ToString());
        top.Parameters.AddWithValue("?", CBL_Date.DateTime);
        top.Parameters.AddWithValue("?", TXE_OurQuote.Text);
        top.Parameters.AddWithValue("?", CBL_Sales_Person.EditValue.ToString());
        top.Parameters.AddWithValue("?", CBL_Customer_Name.EditValue.ToString());
        top.Parameters.AddWithValue("?", TXE_Order_Number.Text);
        top.Parameters.AddWithValue("?", TXE_Invoice_Address.Text);
        top.Parameters.AddWithValue("?", TXE_Delivery_Address.Text);

        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_FlatDiscountP.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_FlatDiscountA.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_ShippingPercentage.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_ShippingAmount.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_SubTotal.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_Discount.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_Tax.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_Shipping.Text));
        top.Parameters.AddWithValue("?", Convert.ToDecimal(TXE_GrandTotal.Text));

        top.Parameters.AddWithValue("?", barCheckItem1.Checked);
        top.Parameters.AddWithValue("?", selectedItem);

        top.Parameters.AddWithValue("?", TXE_Shipping_By.Text);
        top.Parameters.AddWithValue("?", TXE_Reference_No.Text);
        top.Parameters.AddWithValue("?", CBX_Is_Insured.Checked);
        top.Parameters.AddWithValue("?", TXE_Notes.Text);

        top.Parameters.AddWithValue("?", CBL_DueDate.DateTime);
        top.Parameters.AddWithValue("?", TXE_AmountinWords.Text);
        top.Parameters.AddWithValue("?", TXE_Unvisible.Text);
top.ExecuteNonQuery();

现在我将代码更新为参数,但在更新代码时出现语法错误

1 个答案:

答案 0 :(得分:0)

使用参数。 放?对于每个参数值。添加参数值时使用相同的顺序。

string sql = "UPDATE NewInvoice_1 SET Terms =?, [InvoiceDate]=?, OurQuote=? ... WHERE InvoiceId=?";

            using (var command = conn.CreateCommand())
            {
                command.CommandText = sql;
                command.Parameters.Add(CBL_Terms.EditValue.ToString());
                command.Parameters.Add(CBL_Date.DateTime);
                command.Parameters.Add(TXE_OurQuote.Text);

                //add all other fields keeping order

                command.ExecuteNonQuery();
            }

旁注 - 您不应该在表单中执行或保留查询。 此外,如果您使用适配器,您可以使用以下语法添加参数:

command.Parameters.Add(adapter.Parameter(value));