首页 > 解决方案 > VB.NET 数据库不在 MS Access 和登录错误

问题描述

我使用 Microsoft Access 来存储数据。当我在 Microsoft Access 上检查表格时,注册表单显示数据已保存但表格中没有任何数据存储的 msgbox。应该是这样还是我编码错误?

这是我的注册码

If PasswordTextBox.Text.Length >= 8 Then
                Try
                    Dim conn As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database2.accdb")
                    Dim insert As String = "Insert into Table1 values('" & NameTextBox.Text & "','" & Staff_IDTextBox.Text & "','" & Phone_NoTextBox.Text & "','" & UsernameTextBox.Text & "','" & PasswordTextBox.Text & "');"
                    Dim cmd As New OleDbCommand(insert, conn)
                    conn.Open()
                    'cmd.ExecuteNonQuery()
                    MsgBox("Saved")
                    For Each txt As Control In Me.Controls.OfType(Of TextBox)()
                        txt.Text = ""
                    Next
                Catch ex As Exception
                    MsgBox("Error")
                End Try
            Else
                MsgBox("Password must be more than 8 character")
            End If
        End If

这是我的登录代码

uname = UsernameTextBox.Text
            pword = PasswordTextBox.Text
            Dim query As String = "Select password From Table1 where name= '" & uname & "';"
            Dim dbsource As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\Database2.accdb"
            Dim conn = New OleDbConnection(dbsource)
            Dim cmd As New OleDbCommand(query, conn)
            conn.Open()
            Try
                pass = cmd.ExecuteScalar().ToString
            Catch ex As Exception
                MsgBox("Username does not exit")
            End Try
            If (pword = pass) Then
                MsgBox("Login succeed")
            Else
                MsgBox("Login failed")
                UsernameTextBox.Clear()
                PasswordTextBox.Clear()
            End If

此行有错误 pass = cmd.ExecuteScalar().ToString

它说:

System.NullReferenceException:“对象引用未设置为对象的实例。”

标签: vb.netvisual-studio

解决方案


  1. 您的“cmd.ExecuteNonQuery”已被注释掉,因此代码不会将任何内容保存到数据库中。

  2. 您应该在执行 INSERT 命令后关闭连接。

  3. 默认情况下,表格将自动编号字段作为表格中的第一项。您需要从表中删除此字段,才能使特定的 INSERT 命令起作用。

或者您可能需要使用稍微不同的 INSERT 命令。在表中具有自动编号的 ID 字段很有用。

  1. 您可能应该捕获异常并在消息框中显示 ex.Message 而不是“错误”。ex.Message 将对您调试程序更有帮助。

我曾经在我的代码中犯过所有这些错误。


推荐阅读