重载决议失败,因为没有可访问的“新”'接受这个数量的论点

时间:2014-08-12 08:44:59

标签: vb.net visual-studio-2008

帮助重载解决方案失败,因为无法访问新的'接受这个数量的论点。在我添加另一个新的MySqlDataAdapter后,蓝线显示

Else
    ds = New DataSet
    da = New MySqlDataAdapter("INSERT INTO rel_receipt_details values('" & txtornum.Text & "','" & cboparticular.Text & "','" & txtamtpd.Text & "')", conn)
    da.Fill(ds)

    ds = New DataSet
    da = New MySqlDataAdapter("INSERT INTO tbl_receipt values('" & txtornum.Text & "','" & CInt(txtstudid.Text.Remove(0, 2)) & "','" & dtpdate.Text & "','" & txtcashier.Text & "')", conn)
    da.Fill(ds)

    ds = New DataSet
    da = New MySqlDataAdapter("INSERT INTO tbl_check values ('" & checkno.Text & "','" & CInt(txtstudid.Text.Remove(0, 2)) &  "','" & bankname.Text "','" &  bankbranch.Text & "')",conn)   '<-- Error on this line
    da.Fill(ds)

1 个答案:

答案 0 :(得分:2)

在注释行中,您会错过&之后的bankname.Text"','",但是 如果你需要从某个输入文本框直接插入数据库表中的数据,那么你应该使用带有相应命令的MySqlCommand和带有它的ExecuteNonQuery。

所以,仅举例来说

  Dim cmdText = "INSERT INTO rel_receipt_details values(@p1,@p2,@p3)"
  Dim cmd = new MySqlCommand(cmdText,  conn)
  cmd.Parameters.AddWithValue("@p1", txtornum.Text)
  cmd.Parameters.AddWithValue("@p2", cboparticular.Text)
  cmd.Parameters.AddWithValue("@p3", txtamtpd.Text)
  cmd.ExecuteNonQuery()

请注意,不应使用字符串连接编写命令文本。始终使用参数化查询以避免Sql Injection并解析由具有嵌入式引号或日期格式或小数符号的字符串引起的问题。

对于其他两个表,应重复上述代码。 (或者您可以构建一个cmdText,其中三个命令集由分号分隔,而不会忘记所需的参数)

正如注释所指出的,DataAdapter将插入该数据,因为它将在传递的commandtext上盲目地调用ExecuteReader,但从逻辑的角度来看这是完全错误的。 DataAdapter最初用于从数据库中检索记录并填充DataSet,然后,当您对表进行更改(通过代码或通过DataGridView等绑定控件)时,调用执行Insert,Update和删除所需。