Vb.net 3次输入错误的PIN后,模拟卡被没收
我正在连接Access中的数据库,该数据库保存卡详细信息。其中一个字段是“没收”勾选框,表示卡的PIN码输入错误3次。我已经设法让程序检查输入的PIN码是否正确,现在我正试图更改数据库中卡的没收状态。从下拉菜单中选择卡号。当一张卡被没收时,它不应该再出现在此组合框中。这是我目前的代码:Vb.net 3次输入错误的PIN后,模拟卡被没收,vb.net,Vb.net,我正在连接Access中的数据库,该数据库保存卡详细信息。其中一个字段是“没收”勾选框,表示卡的PIN码输入错误3次。我已经设法让程序检查输入的PIN码是否正确,现在我正试图更改数据库中卡的没收状态。从下拉菜单中选择卡号。当一张卡被没收时,它不应该再出现在此组合框中。这是我目前的代码: Imports System.Data.OleDb Public Class PinEntry Public connectionString As String = "Provider=Microsoft.
Imports System.Data.OleDb
Public Class PinEntry
Public connectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = C:\Users\ben\Documents\Programming\Year 2\Visual Studio\Assignment2\BankOfGlamorgan\EDP2011-BoG.mdb"
Friend connectionBG As New OleDbConnection
Dim ds As New DataSet
Dim da As New OleDbDataAdapter
Dim commandCardNumber, commandPinNumber As New OleDbCommand()
Dim dr As OleDbDataReader
Dim pinErrorCount, cardNumber, PIN As Integer
Dim oForm As Menu
Dim userInput As String
Private Sub PinEntry_Load(sender As Object, e As EventArgs) Handles MyBase.Load
connectionBG.ConnectionString = connectionString
commandCardNumber.Connection = connectionBG
commandCardNumber.CommandType = CommandType.Text
commandCardNumber.CommandText = "SELECT cardNumber FROM ATMCards"
commandPinNumber.Connection = connectionBG
commandPinNumber.CommandType = CommandType.Text
commandPinNumber.CommandText = "SELECT PIN FROM ATMCards WHERE cardNumber = ?"
Try
connectionBG.Open()
da.SelectCommand = commandCardNumber
da.Fill(ds, "ATMCards")
cmbCardNumber.DataSource = ds.Tables("ATMCards")
cmbCardNumber.DisplayMember = "cardNumber"
Catch ex As Exception
MessageBox.Show(ex.Message)
Finally
connectionBG.Close()
End Try
End Sub
Private Sub btnEnterPin_Click(sender As Object, e As EventArgs) Handles btnEnterPin.Click
cardNumber = Convert.ToInt16(cmbCardNumber.Text)
commandPinNumber.Parameters.Add(New OleDbParameter())
commandPinNumber.Parameters(0).Value = cardNumber
Try
connectionBG.Open()
dr = commandPinNumber.ExecuteReader()
While dr.Read()
PIN = dr.Item("PIN").ToString
End While
dr.Close()
If PIN = userInput Then
MsgBox("Correct PIN")
oForm = New Menu()
oForm.Show()
oForm = Nothing
Else
MsgBox("Incorrect PIN")
End If
Catch ex As Exception
MsgBox(ex.Message)
Finally
connectionBG.Close()
End Try
End Sub
Private Sub txtPIN_TextChanged(sender As Object, e As EventArgs) Handles txtPIN.TextChanged
userInput = txtPIN.Text
End Sub
End Class
你不能只选择CardNumber,其中的值为空吗?这只是一个更安全的应用程序的测试工具吗?请告诉我,我的银行或其他任何人的银行没有使用访问权限来访问此类内容。请此外,没收可能应该是一个位字段,然后您只需查询位字段中没收=false的记录。您能解释一下您的问题吗?您试图在代码中的何处设置没收状态?除了“不正确的PIN”消息外,您还需要增加错误计数器,如果它大于允许的最大值,发出SQL更新以在数据库中设置没收标志。您还需要修改cbo的SQL源代码,使其仅显示“打开的卡片”(提示:使用WHERE子句)(Steve评论的更具心理学意义的版本)。