【发布时间】:2016-12-12 15:16:23
【问题描述】:
我尝试注册一个用户,但是当我想保存时,连接会转到“catch”而不是“try”。 我可以调试程序,但数据没有保存在数据库中。谁能告诉我是什么问题?谢谢。
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
【问题讨论】:
-
当您遇到错误并询问有关该错误的问题时,您需要包含该错误。在这种情况下,它称为异常(错误如何在 .net 中表现出来)。包括消息、异常类型、堆栈跟踪和任何内部异常详细信息。使用问题上的编辑链接包含该详细信息,请勿将其作为评论。
-
可能与您在
" @DATE_ENCODED",有空间的事实有关。这应该是cmd.Parameters.Add(New OleDb.OleDbParameter("@DATE_ENCODED", b))。但是,正如已经提出的那样,编辑带有例外等的问题,因为这可能有助于立即识别问题。另外,当您在使用它时,为什么不使用Tour 并查看How to ask。 -
异常会告诉你出了什么问题。该代码会丢弃消息并打印无用的消息。
Name也是Access SQL中的保留字,所以要转义[Name] -
MsgBox (ex.ToString)
-
@Igor 感谢您的回复..对不起,因为这是我第一次在这里询问并使用此网站..我已将 MsgBox 更改为(ex.ToString)以识别错误和错误我发现在'cmd.ExecuteNonQuery()' ..我不知道为什么它不能将数据执行到数据库..编码或数据库有问题吗?
标签: sql database vb.net ms-access