在VS2010中使用参数INSERT查询

时间:2016-09-06 10:16:19

标签: vb.net apostrophe sqlparameters

我不明白为什么每当我在txtParticulars.TexttxtPayTo.Text中加入撇号时,它都不会插入我的数据库。

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

我的文本框值为:

txtPayTo.Text>喜悦的精品店 txtParticulars>顶' S 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()

1 个答案:

答案 0 :(得分: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