我是Visual Basic for Applications的新手。我目前的程序中有一個登錄系統。您將通過閱讀以下內容瞭解該系統。我有一個Access數據庫,其表看起來像以下: -在Visual Basic中選擇命令無法正常工作
Name : Cookies
----------------------------
ID | Nme | Val |
----------------------------
表被清除,並且它的所有內容,當窗體關閉時刪除。現在,當,一排用戶的跡象增加: -
----------------------------
(id) | "user" | username |
----------------------------
現在,用戶輸入他的形式index.vb和命令ID和密碼,添加行中訪問數據庫也有在index.vb文件中。行添加後,index.vb文件被隱藏,並顯示文件userpage.vb。現在,我已經看到,當用戶登錄時,該行會正確添加到訪問文件中(通過手動刷新訪問文件),並且在關閉窗口時,表格中的所有內容都會正確刪除。所以,插入和刪除行沒有問題。顯然,問題出在顯示部分。我顯示的用戶名是如下代碼(代碼是在userpage.vb文件): -
Dim Username As String = ""
Dim Conn As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Software\db.accdb")
Conn.Open()
Dim Cmd As New OleDb.OleDbCommand("Select Val From Cookies Where Nme='user'", Conn)
Dim Reader = Cmd.ExecuteReader
Do While Reader.Read
Username = Reader.Item("Val")
Loop
Label1.Text = "Welcome " & Username
Conn.Close()
所給出的輸出是「歡迎」和用戶名是「」,即使已經添加的行。現在,我也通過實驗看到了這一點,當我在訪問數據庫中手動添加一行時,將會在數據庫中添加相同的細節時出現問題,該程序可以正常工作。任何幫助,當然,將不勝感激,並感謝您閱讀這篇長篇文章。
更新1(由@Dimple的建議) 我插入的代碼如下(此代碼是在index.vb頁): -
Dim usernameinput As String = TextBox1.Text
Dim Cmmd As New OleDb.OleDbCommand()
Cmmd.Connection = Conn
Cmmd.CommandText = "INSERT INTO Cookies (Nme, Val) Values('user','" & usernameinput & "')"
Cmmd.ExecuteNonQuery()
Dim Userpage As New User_page
Me.Hide()
Userpage.Show()
難道問題是在你的select命令中你有'用戶'硬編碼?你不應該把它作爲一個變量嗎? (或者更好的,一個避免SQL注入的參數)。 – APrough