声明查询时出现OleDBDataAdapter错误

时间:2018-09-07 06:35:46

标签: vb.net

Private Sub btnsave_Click(sender As System.Object, e As System.EventArgs) Handles btnsave.Click
    adt = New OleDbDataAdapter ("insert into tb1 (job station,status,frekuensi,durasi,rata-rata) values ('"& lblstation.Text &"','" & lblstatus.Text &"','"& lblfrekuensi.Text &"','"&lbldurasi.Text&"','" &lblrata.Text& "')",dbconn)
    adt.Fill(ds)
    ds = New DataSet
    MsgBox("kesimpen")
End Sub

当我声明'"& lblfrekuensi.Text &"''"&lbldurasi.Text&"'时,我收到一条错误消息:

  

类型字符'&'与声明的数据类型'String'不匹配

  

重载解析失败,因为没有可访问的“新建”接受此数量的参数

  

逗号,')',或预期的有效表达式继续。

对不起,我的英语不好。我尝试再次检查我的代码,但找不到任何解决方案。我该怎么办?

1 个答案:

答案 0 :(得分:0)

仅使用参数,决不要编写带有串联的SQL字符串。

Private Sub btnsave_Click(sender As System.Object, e As System.EventArgs) Handles btnsave.Click
    dim mySql as string  = <sql>
insert into tb1 
  ([job station],status,frekuensi,durasi,[rata-rata]) 
values 
  (?,?,?,?,?)
</sql> 
    adt = New OleDbDataAdapter (mySql,dbconn)
    adt.SelectCommand.Parameters.Add("jobStation", OleDbType.Varchar).Value = lblstation.Text 
    adt.SelectCommand.Parameters.Add("status", OleDbType.Varchar).Value = lblstatus.Text
   adt.SelectCommand.Parameters.Add("frekuensi", OleDbType.Varchar).Value = lblfrekuensi.Text
    adt.SelectCommand.Parameters.Add("duration", OleDbType.Varchar).Value = lbldurasi.Text
    adt.SelectCommand.Parameters.Add("ratarata", OleDbType.Varchar).Value = lblrata.Text

    ds = New DataSet
    adt.Fill(ds)
    MsgBox("kesimpen")
End Sub

使用参数:

  • 防止SQL注入攻击。
  • 防止讨厌的引号错误(而且值本身也可能包含引号,&符号...)
  • 正确提供传递值。
  • 提供更好的可读性。