2016-05-12 85 views
0

我正在嘗試爲公司員工設置「出席」,如果他們在程序中輸入/輸出。數據庫有一個名稱相同的字段,並使用布爾值來存儲某人是否存在。我相信我的SQL語句是正確的。我繼續得到的問題是:「其他信息:沒有給出一個或多個必需參數的值。」SQL參數問題

這裏是我使用執行更新查詢代碼:

Private Sub btnClockout_Click(sender As Object, e As EventArgs) Handles btnClockout.Click 
    'SelectedEmployee = lstClockin.FocusedItem.Text 
    'lblClockinStatusColor.BackColor = Color.Red 
    'btnClockout.Enabled = False 
    'btnClockin.Enabled = True 
    'lblClockinStatus.Text = "Employee is: Clocked Out" 
    'If txtInfoEmployeeID.Text = "" Then 
    ' MsgBox("You need to select a employee to clock-out.", MsgBoxStyle.Exclamation) 
    'End If 

    con.ConnectionString = provider & datafile 
    con.Open() 
    sqlstatement = ("UPDATE [EmployeeAccounts] SET [Present] = False WHERE [EmployeeID] = '" & SelectedEmployee & "'") 
    da = New OleDb.OleDbDataAdapter(sqlstatement, con) 
    da.Fill(ds, "ClockOutButton") 
    con.Close() 

End Sub 
+1

我不是VB專家,所以我不會嘗試一個答案。但是你應該認識到你當前的查詢很容易發生SQL注入。相反,你應該使用參數化查詢。 –

+0

@TimBiegeleisen +1,請嘗試查看[此問題](http://stackoverflow.com/questions/20845283/vb-net-sql-parameters-update?rq=1)參數化查詢。 –

+0

另外,你確定你應該使用新的OldDbDataAdapter進行更新嗎? –

回答

0

我不認爲有任何布爾類型的SQL數據庫。你可以使用下面的代碼。

Private Sub btnClockout_Click(sender As Object, e As EventArgs) Handles btnClockout.Click 
    SelectedEmployee = lstClockin.FocusedItem.Text 
    'lblClockinStatusColor.BackColor = Color.Red 
    'btnClockout.Enabled = False 
    'btnClockin.Enabled = True 
    'lblClockinStatus.Text = "Employee is: Clocked Out" 
    'If txtInfoEmployeeID.Text = "" Then 
    ' MsgBox("You need to select a employee to clock-out.", MsgBoxStyle.Exclamation) 
    'End If 

    con.ConnectionString = provider & datafile 
    con.Open() 
    sqlstatement = ("UPDATE [EmployeeAccounts] SET [Present] = 'False' WHERE [EmployeeID] = '" & SelectedEmployee & "'") 
    da = New OleDb.OleDbDataAdapter(sqlstatement, con) 
    da.Fill(ds, "ClockOutButton") 
    con.Close() 

End Sub 
+0

您可以使用SQL數據類型'bit'來表示一個布爾值,因爲它只能是Null,0或1.(0 = False,1 = True) –

+0

我們可以在update語句中使用set [Present] = False ? –

+0

這也不起作用,它連接的數據庫也沒有問題,因爲程序在選擇所有成員時工作正常,只是在爲選定員工設置Present爲true/false時沒有問題。 –