我的專案和我的Ms Access 2010資料庫之間的連接在登錄我的專案時似乎是正確的。然而,在第一次試用后(如果用戶和/或密碼不正確),當我試圖再次登錄時,出現了錯誤。它說 "連接沒有關閉。連接的當前狀態是開放的"。我剛剛找到MySql服務的可能解決方案,但我使用的是Ms Access資料庫。似乎出現錯誤的代碼如下。有什么建議嗎,請說:
Public Function Validation()
da.Fill(dt)
connection.Open()
For Each DataRow In dt.Rows
If txtUser.Text = DataRow.Item(0) And txtPassword。 Text = DataRow(1) 然后。
If cmbAccountType.Text = DataRow(2) Then
連接.關閉()
Return True
End If
End If
下一步 下一步
Return False
End Function[/span
uj5u.com熱心網友回復:
為什么你首先要打開連接?你在Open和Close呼叫之間沒有使用它,那么有什么意義?Fill方法將自動打開連接,如果它目前是關閉的,那么它將自動再次關閉它,也就是說,Fill和Update將在必要時打開連接,之后讓它保持原來的狀態。擺脫Open和Close這兩個呼叫。
uj5u.com熱心網友回復:
首先,vb.net中的Function需要一個DataType。我不知道da.Fill(dt)在這個函式中做什么。如果你沒有一個開放的連接,你將無法填充任何東西,但在下一行,你從某個地方打開了一些未知的連接。
OleDb不關注引數的名稱。引數在 sql 字串中的位置必須與引數被添加到引數集合中的順序一致。
下面是一種方法。
Private ConnStr As String = "Your connection string"
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1. 點擊
If Validation(txtUser.Text, txtPassword.Text, cmbAccountType.Text) 然后
'做一些事情。
結束 若
End Sub
Public Function Validation(UName As String, PWord As String, Type As String) As Boolean Boolean
Dim計數 As Integer
使用 cn As New OleDbConnection(ConnStr)。
cmd As New OleDbCommand("Select Count(*) From SomeTable Where User = @User And Password = @Password And AccountType = @Type;", cn)
cmd.Parameters.Add("@User", OleDbType.VarChar).Value = UName
cmd.Parameters.Add("@Password", OleDbType.VarChar).Value = PWord
cmd.Parameters.Add("@Type", OleDbType.VarChar).Value = Type
cn.Open()
Count = CInt(cmd.ExecuteScalar)
End Using
If Count > 0 Then
Return True
End If
Return False
結束 功能
當然,你應該永遠將密碼存盤為純文本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317229.html
標籤:
上一篇:HTMLCSS不起作用
