簡體   English   中英

重載解析失敗,因為沒有可訪問的“新”接受此數目的參數

[英]overload resolution failed because no accessible 'new' accepts this number of arguments

幫助重載解析失敗,因為沒有可訪問的“新”接受此數目的參數。 在我添加另一個新的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)

在注釋行中,您會錯過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注入和解析問題,這些問題是由帶有嵌入式引號或日期格式或小數點符號的字符串引起的。

對於其他兩個表,應重復以上代碼。 (或者,您可以構建一個cmdText,其中三個命令文本之間用分號分隔,而不會忘記所需的參數)

正如評論所指出的那樣,DataAdapter將插入該數據,因為它將在傳遞的命令文本上盲目調用ExecuteReader,但是從邏輯角度來看,這是完全錯誤的。 首先使用DataAdapter從數據庫檢索記錄並填充DataSet,然后在對表進行更改(通過代碼或通過諸如DataGridView之類的綁定控件)后,調用執行Insert,Update和必須刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM