在System.Data.dll中发生了一个名为“System.Data.OleDb.OleDbException类型的第一次机会异常”的错误“

时间:2013-07-16 13:46:00

标签: vb.net ms-access

晚上好的程序员。我正在做我的最后一年项目,我正在做一个基于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

3 个答案:

答案 0 :(得分:1)

有第一次机会例外和第二次机会例外;第二次机会异常是您的代码尝试处理的异常,而调试器会“看到”第一次机会异常。换句话说,第一次机会异常仅在您调试时很重要。

以下是First and second chance exception handling

上的一些MSDN文档

答案 1 :(得分:1)

Passwordreserved word。将其括在INSERT语句的方括号中。

cmd.CommandText = "INSERT INTO adminlogin(Username,[Password]) VALUES(@Username,@Password)"

答案 2 :(得分:0)

每次在调试器中运行应用程序时,它都会将访问数据库从项目目录复制到bin / debug目录,从而覆盖先前在调试时输入的数据。

将访问数据集的行为设置为“不复制”,您的数据将通过调试会话保持不变。