vb.net - 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:“对象引用未设置为对象的实例。”
解决方案
您的“cmd.ExecuteNonQuery”已被注释掉,因此代码不会将任何内容保存到数据库中。
您应该在执行 INSERT 命令后关闭连接。
默认情况下,表格将自动编号字段作为表格中的第一项。您需要从表中删除此字段,才能使特定的 INSERT 命令起作用。
或者您可能需要使用稍微不同的 INSERT 命令。在表中具有自动编号的 ID 字段很有用。
- 您可能应该捕获异常并在消息框中显示 ex.Message 而不是“错误”。ex.Message 将对您调试程序更有帮助。
我曾经在我的代码中犯过所有这些错误。
推荐阅读
- powershell - 如何使用PowerShell删除目录中的所有文件以及小于100kb的所有子目录
- go - go append 在循环映射时很奇怪
- google-apps-script - 使用 3rd 方日历应用更改事件时,应调用日历事件更新的 G Suite 插件触发器
- javascript - 从 Firestore 异步获取数据并在 React 中作为属性传递
- java - 如何在 Kotlin 中使用 Google 日历 API?
- go - Why does adding 1.0/3.0 numeric literal three times evaluates to exactly 1 in Golang?
- c# - .net 核心中调用 wcf 的身份验证方案
- javascript - 如何使用 Chart.js 创建水平条形组件
- azure - 使用 Graph API 监控应用注册的可能性
- python - 将文件移出文件夹 Python