如何解决vb.net数据库连接错误试试catch数据库?

时间:2016-12-12 15:16:24

标签: sql database vb.net ms-access

我尝试注册一个用户,但是当我想要保存时,那么连接会进入' catch'而不是'尝试'。 我可以调试程序,但数据不保存在数据库中..谁能告诉我是什么问题?谢谢。

Public Class DTRCLASS
Dim mDataPath As String
Public Shared DataModule As DTRCLASS

Private Function GetConnection() As OleDb.OleDbConnection

    Return New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mDataPath & "\dtrdb.accdb")

End Function

Public Overloads Function SaveMEM() As DataSet
    Return Me.SaveMEM("MEM_CODE")
End Function

Public Overloads Function SaveMEM(ByVal sortfield As String) As DataSet
    Dim a As String
    Dim b As String
    b = Form1.Label16.Text & " " & Form1.Label15.Text

    a = Form1.txtlast.Text & ", " & Form1.txtfirst.Text & " " & Form1.txtmi.Text & "."

    Dim conn As OleDb.OleDbConnection = GetConnection()
    Dim SQL As String

    Try
        SQL = "INSERT INTO MEMBERS_PROF ( MEM_CODE, LOG_ID, NAME, COURSE_POSITION,GENDER," & _
        "ENCODER, DATE_ENCODED )VALUES ( @MEM_CODE, @LOG_ID, @NAME, @COURSE_POSITION,@GENDER,@ENCODER, @DATE_ENCODED);"


        Dim cmd As New OleDb.OleDbCommand(SQL, conn)
        cmd.Parameters.Add(New OleDb.OleDbParameter("@MEM_CODE", Form1.txtid.Text))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@LOG_ID", Form1.txtpin.Text))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@NAME", a))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@COURSE_POSITION", Form1.txtpos.Text))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@GENDER", Form1.cbogen.SelectedItem))
        cmd.Parameters.Add(New OleDb.OleDbParameter("@ENCODER", Form1.GuestToolStripMenuItem.Text))
        cmd.Parameters.Add(New OleDb.OleDbParameter(" @DATE_ENCODED", b))
  

cmd.ExecuteNonQuery()   在调试时,它总是得到消息"连接错误,ID或PIN已经存在" error message when i try debug using the coding 'MsgBox(ex.ToString')

        conn.Open()
        cmd.ExecuteNonQuery()



        MessageBox.Show("New Member is added!")
        clear()
        'RefreshDGV()


    Catch ex As Exception

        MsgBox("Error in connection! ID or PIN already exist!")
    Finally
        conn.Close()
        conn.Dispose()
    End Try

End Function

Line 91

1 个答案:

答案 0 :(得分:0)

从错误图像中,问题是“条件表达式中的数据类型不匹配”。去看看。这个陈述接近顶部。

这句话应该让你问,'你插入的表中有哪些数据类型,我试图插入的数据类型是什么?'可能存在不匹配。

在您的代码段中,看起来插入的几个字段是文本,但某些字段似乎描述了其他数据类型。喜欢这个

cmd.Parameters.Add(New OleDb.OleDbParameter(" @DATE_ENCODED", b))

但是b在这里被定义为类似数据类型的文本。

Dim b As String

这个名字听起来就像一个日期类型。

如果将@DateEncoded参数转换为insert语句中的日期字段(CDate是执行此操作的函数),则应解决此字段的错误。虽然可能存在其他不匹配的字段,具体取决于您的表格。这是包含日期转换功能的insert语句。

SQL = "INSERT INTO MEMBERS_PROF ( MEM_CODE, LOG_ID, NAME, COURSE_POSITION,GENDER," & _
"ENCODER, DATE_ENCODED )VALUES ( @MEM_CODE, @LOG_ID, @NAME, @COURSE_POSITION,@GENDER,@ENCODER, CDate(@DATE_ENCODED));"