在VB

-1

刪除SQL數據庫中的行我有刪除SQL數據庫行下一次刪除的問題。 對於一日一次,它的工作正常,但第二次,我得到的錯誤味精(命令參數[1]是無效的)。在VB

我使用datagridview的用於選擇行(單/多),即我想刪除。 這是我的代碼:

Dim response As MsgBoxResult 
    Dim i As Integer 
    i = DataGridView1.CurrentRow.Index 

    If Not Trim(DataGridView1.Item("Group", i).Value.ToString) = "Admin" Then 
     response = MsgBox("Do you want remove this account ?" & vbNewLine & "Account : " & Trim(DataGridView1.Item("Name", i).Value.ToString), _ 
          MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Delete Data") 
     If response = MsgBoxResult.Yes Then 
      If Not MyConnection.State = ConnectionState.Open Then 
       MyConnection.Open() 
      End If 
      cmd.Connection = MyConnection 
      cmd.CommandText = "DELETE FROM t_User WHERE ID =?" 
      cmd.Parameters.AddWithValue("@row", 0) 
      For Each UserRow As DataGridViewRow In DataGridView1.SelectedRows 
      If Not MyConnection.State = ConnectionState.Open Then 
        MyConnection.Open() 
      End If 
       cmd.Connection = MyConnection 
       cmd.Parameters("@row").Value = UserRow.Cells("ID").Value 
       DataGridView1.Rows.Remove(UserRow) 
       cmd.ExecuteNonQuery() 
       DeleteColumns() 
       CreateColumns() 
       MyConnection.Close() 
      Next UserRow 
      Me.BackgroundWorker1.RunWorkerAsync() 
     End If 
    End If 

請幫助我,你的幫助是極大的讚賞

回答

0

不要關閉for循環中的連接。移動此行:

MyConnection.Close() 

後面的UserRow行。

或者如果你需要重新打開每一行後面的連接[這是罕見]那麼你就需要重新進行全面CMD像

  cmd.Connection = MyConnection 
      cmd.CommandText = "DELETE FROM t_User WHERE ID =?" 
      cmd.Parameters.AddWithValue("@row", 0) 
+0

我試圖擺在那裏,但問題是相同的當我試圖通過行刪除行/ –

+0

儘量不要多行重新設置連接,刪除:cmd.Connection = MyConnection的 – Ezi

+0

還是同樣的問題,當我刪除該行(cmd.Connection = MyConnection的) –