2016-09-06 83 views
0

我不明白为什么在我的txtParticulars.TexttxtPayTo.Text中包含撇号时没有插入到我的数据库中。使用VS2010中的参数INSERT查询

的错误是这样的:Syntax error (missing operator) in query expression ''Joy's Boutique','Top's,'Issued')'.

我的文本框的值是:

txtPayTo.Text> Joy的精品 txtParticulars>顶的 cmbRemarks.SelectedItem>发行

但每当我txtParticularstxtPayTo值不具有撇号,我的数据保存。

下面是我的代码:

sql1 = "INSERT INTO Table1(Check_No,Voucher_No,Issue_Date,Company_Name,Bank_Type,Amount_in_Figure,Amount_in_Words,Payee,Particulars,Remarks) VALUES(@CheckNo,@VoucherNo,@Date,@CompName,@BankType,@AmtInFigure,@AmtInWords,@PayTo,@Particulars,@Remarks)" 

        Dim cmd1 As OleDbCommand = New OleDbCommand(sql1, myConnection) 

        cmd1.Parameters.AddWithValue("@CheckNo", txtCheckNo.Text) 
        cmd1.Parameters.AddWithValue("@VoucherNo", txtVoucherNo.Text) 
        cmd1.Parameters.AddWithValue("@Date", dtpDate.Text) 
        cmd1.Parameters.AddWithValue("@CompName", txtCompName.Text) 
        cmd1.Parameters.AddWithValue("@BankType", txtBankType.Text) 
        cmd1.Parameters.AddWithValue("@AmtInFigure", txtAmtInFigure.Text) 
        cmd1.Parameters.AddWithValue("@AmtInWords", txtAmtInWords.Text) 
        cmd1.Parameters.AddWithValue("@PayTo", txtPayTo.Text) 
        cmd1.Parameters.AddWithValue("@Particulars", txtParticulars.Text) 
        cmd1.Parameters.AddWithValue("@Remarks", cmbRemarks.SelectedItem) 

        cmd1.ExecuteNonQuery() 
+0

请编辑您的问题告诉我们,*其中*文本框,如果你得到一个错误消息,然后包括那个文本。 –

+0

编辑它先生@AndrewMorton – Erica

+3

使用'添加'而不是'AddWithValue'。像'cmd1.Parameters.Add(“@ PayTo”,SqlDbType.Varchar)cmd1.Parameters(“@ PayTo”)。Value = txtPayTo.Text' –

回答

0

使用Add而不是AddWithValue
后者必须通过传入的值来猜测正确的数据库类型。
Add方法更依赖于该方法(只要您不使用Add(string, object)过载)。

根据您的例子:

cmd1.Parameters.Add("@PayTo", SqlDbType.Varchar) 
cmd1.Parameters("@PayTo").Value = txtPayTo.Text 

或一条线(感谢Plutonix):

cmd1.Parameters.Add("@PayTo", SqlDbType.Varchar).Value = txtPayTo.Text