在 VS2010 中使用参数插入查询

INSERT Query with Parameters in VS2010

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

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

我的文本框值为:

txtPayTo.Text > 乔伊的精品店 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()

使用 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