晚上好的程序员。我正在做我的最后一年项目,我正在做一个基于VB.net和Access数据库的食品订购系统。我在调试应用程序时出现了这个错误,
System.Data.dll中出现'System.Data.OleDb.OleDbException'类型的第一次机会异常 附加信息:INSERT INTO语句中的语法错误。
这是我正在处理的代码的副本。此代码遵循类似的代码,输入管理员的详细信息。此表单中的此特定代码旨在接受用于登录系统的管理员ID和密码。
Imports System.Data.OleDb
Imports System.Configuration
Public Class adminadd2
'must put everytime, global bro
Dim con As New OleDbConnection
Private Sub save_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles save.Click
Dim TA As New CQFOSDataSet1TableAdapters.adminloginTableAdapter
Dim cmd As New OleDbCommand
Dim con As New OleDbConnection
'Dim yourconnection As String = ConfigurationManager.ConnectionStrings("yourconnectionstring").ConnectionString
'con = New OleDbConnection(yourconnection)
'cmd.CommandType = CommandType.Text
Dim connectionString As String = ConfigurationManager.ConnectionStrings("Mark1.My.MySettings.CQFOSConnectionString").ConnectionString
con = New OleDbConnection(connectionString)
cmd.CommandType = CommandType.Text
cmd.CommandText = "INSERT INTO adminlogin(Username,Password) VALUES(@Username,@Password)"
cmd.Parameters.AddWithValue("@Username", adminid.Text)
cmd.Parameters.AddWithValue("@Password", adminpass.Text)
cmd.Connection = con
Dim RowsAffected As Integer
con.Open()
'rowaffected returns the number or row affected
RowsAffected = cmd.ExecuteNonQuery()
Dim selectQuery As String = "Select FROM adminlogin"
If RowsAffected = 1 Then
MsgBox("New Admin is saved. Login Using your credentials.", MsgBoxStyle.OkOnly, "CQFOS")
End If
con.Close()
Me.Hide()
adminaccess.Show()
End Sub
End Class
答案 0 :(得分:1)
有第一次机会例外和第二次机会例外;第二次机会异常是您的代码尝试处理的异常,而调试器会“看到”第一次机会异常。换句话说,第一次机会异常仅在您调试时很重要。
上的一些MSDN文档答案 1 :(得分:1)
Password
是reserved word。将其括在INSERT
语句的方括号中。
cmd.CommandText = "INSERT INTO adminlogin(Username,[Password]) VALUES(@Username,@Password)"
答案 2 :(得分:0)
每次在调试器中运行应用程序时,它都会将访问数据库从项目目录复制到bin / debug目录,从而覆盖先前在调试时输入的数据。
将访问数据集的行为设置为“不复制”,您的数据将通过调试会话保持不变。