2013-07-16 46 views
0

我是VB的初學者,我試圖從數據庫中刪除記錄,但它不允許我... 他們給了我這個錯誤消息,我不完全理解什麼這意味着...... 或有任何其他方式永久刪除記錄?如何從VB永久刪除數據庫的記錄

無法找到名爲userID的列。 參數名稱:列名

我的繼承人碼

Imports System 
Imports System.Data 
Imports System.Data.SqlClient 

Public Class frmUserManagement 
    Dim countID As Integer = 0 
    Dim conn As New SqlConnection 
    Dim drEmployee As SqlClient.SqlDataReader 
    Dim cmdEmployee As New SqlClient.SqlCommand 

    Dim sAdapter As New SqlDataAdapter 
    Dim sTable As New DataTable 

    Private Sub btnAddEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAddEmp.Click 
     Dim tranEmployee As SqlClient.SqlTransaction 
     sAdapter = New SqlDataAdapter(cmdEmployee) 
     Dim strID As String 
     Dim strName As String 

     Dim strPosition As String 
     Dim strContactNo As String 
     Dim strAddress As String 
     Dim strDOB As String 
     Dim strGender As String 
     Dim strSQL As String 

     conn.Open() 


     strID = lblEmpID.Text 
     strName = txtEmpName.Text 
     strPosition = cboEmpPosition.Text 
     strContactNo = mskEmpDOB.Text 
     strDOB = mskEmpDOB.Text 
     strAddress = txtEmpAddress.Text 
     If radEmpMale.Checked Then 
      strGender = "Male" 
     Else 
      strGender = "Female" 
     End If 


     strSQL = "INSERT INTO Users(userID,userName,userPosition,userGender,userDOB,userAddress)" & _ 
      "VALUES(@ID,@NAME,@POSITION,@GENDER,@DOB,@ADDRESS)" 

     tranEmployee = conn.BeginTransaction() 

     With cmdEmployee 
      .Transaction = tranEmployee 
      .CommandText = strSQL 
      .Parameters.AddWithValue("@ID", strID) 
      .Parameters.AddWithValue("@NAME", strName) 
      .Parameters.AddWithValue("@POSITION", strPosition) 
      .Parameters.AddWithValue("@GENDER", strGender) 
      .Parameters.AddWithValue("@DOB", strDOB) 
      .Parameters.AddWithValue("@ADDRESS", strAddress) 
      .Connection = conn 

     End With 

     Try 
      cmdEmployee.ExecuteNonQuery() 
      tranEmployee.Commit() 

     Catch ex As Exception 
      tranEmployee.Rollback() 
      MessageBox.Show(ex.Message) 
     Finally 
      conn.Close() 
     End Try 

    End Sub 

    Private Sub frmUserManagement_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     If mintIndex <= 9000 Then 
      lblEmpID.Text = "EMP" & (countID + 1).ToString("000#") 
     End If 

     Try 
      With conn 
       .ConnectionString = strConnection 
       .Open() 
      End With 

      With cmdEmployee 
       .CommandText = "SELECT * FROM Users ORDER BY userID" 
       .Connection = conn 
      End With 
      drEmployee = cmdEmployee.ExecuteReader() 

      If drEmployee.HasRows Then 
       While drEmployee.Read() 

        DataGridView1.Rows.Add(drEmployee(0), drEmployee(3), drEmployee(1), drEmployee(4), drEmployee(2), drEmployee(5)) 


       End While 
       drEmployee.Close() 
      End If 
     Catch ex As Exception 
      MessageBox.Show(ex.Message) 
     Finally 
      conn.Close() 
     End Try 
    End Sub 

    Private Sub btnDeleteEmp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDeleteEmp.Click 
     With cmdEmployee 
      .CommandText = "DELETE FROM Users WHERE userID = " & DataGridView1.CurrentRow.Cells(0).Value & "" 
      .Connection = conn 
      .Parameters.AddWithValue("@ID", 0) 
     End With 
     Dim rows = DataGridView1.SelectedRows 
     For Each row In rows 
      cmdEmployee.Parameters("@ID").Value = row.Cells("userID").Value 
      cmdEmployee.ExecuteNonQuery() 
     Next 
      drEmployee = cmdEmployee.ExecuteReader() 

    End Sub 

    Private Sub btnEditEmp_Click(sender As System.Object, e As System.EventArgs) Handles btnEditEmp.Click 
     lblEmpID.Enabled = False 
     txtEmpName.Enabled = False 
     grpGender.Enabled = False 
    End Sub 
End Class 
+4

使用' 「DELETE FROM用戶其中userid = @ID」'(刪除'&DataGridView1.CurrentRow.Cells(0).value的& 「」'部分) –

回答

0

這意味着你沒有一個叫用戶ID列在你的餐桌,你確定它不只是ID?

+0

我更改名稱,他們仍然給我相同的結果... –

+0

去sql服務器管理工​​作室,右鍵單擊您的表然後設計,並確保列'userID'在表中。 – prospector

+0

是的,在那裏... –

0

你應該使用:

With cmdEmployee 
    .CommandText = "DELETE FROM Users WHERE userID = @ID" 
    .Connection = conn 
    .Parameters.AddWithValue("@ID", 0) 
End With