hi,当我尝试保存数据以访问2007数据库时,出现诸如“异常已被调用的目标抛出”之类的错误,我正在使项目从规模上权重并将其保存到数据库中,请帮助我解决错误
Try
Dim PRO As String
Dim CONNSTRING As String
Dim COMMAND As String
Dim MYCONNECTION As OleDbConnection = New OleDbConnection
PRO = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\weight.accdb;Persist Security Info=True;Jet OLEDB:Database Password=weight"
CONNSTRING = PRO
MYCONNECTION.ConnectionString = CONNSTRING
MYCONNECTION.Open()
COMMAND = "insert into entry ([weight1],[date1],[time1],[weight2],[date2],[time2],[netweight],[vehicleno],[name],[contactno],[productname],[charge],[paymentstatus]) values ('" & weight1.Text & "','" & date1.Text & "','" & time1.Text & "','" & weight2.Text & "','" & date2.Text & "','" & time2.Text & "','" & netweight.Text & "','" & vehicleno.Text & "','" & custname.Text & "','" & contact.Text & "','" & Product.Text & "','" & charge.Text & "','" & status.Text & "')"
Dim cmd As OleDbCommand = New OleDbCommand(COMMAND, MYCONNECTION)
cmd.Parameters.Add(New OleDbParameter("weight1", CType(weight1.Text, String)))
cmd.Parameters.Add(New OleDbParameter("date1", CType(date1.Text, String)))
cmd.Parameters.Add(New OleDbParameter("time1", CType(time1.Text, String)))
cmd.Parameters.Add(New OleDbParameter("weight2", CType(weight2.Text, String)))
cmd.Parameters.Add(New OleDbParameter("date2", CType(date2.Text, String)))
cmd.Parameters.Add(New OleDbParameter("time2", CType(time2.Text, String)))
cmd.Parameters.Add(New OleDbParameter("netweight", CType(netweight.Text, String)))
cmd.Parameters.Add(New OleDbParameter("vehicleno", CType(vehicleno.Text, String)))
cmd.Parameters.Add(New OleDbParameter("name", CType(custname.Text, String)))
cmd.Parameters.Add(New OleDbParameter("contactno", CType(contact.Text, String)))
cmd.Parameters.Add(New OleDbParameter("productname", CType(Product.Text, String)))
cmd.Parameters.Add(New OleDbParameter("charge", CType(charge.Text, String)))
cmd.Parameters.Add(New OleDbParameter("paymentstatus", CType(status.Text, String)))
MsgBox("Saved")
cmd.ExecuteNonQuery()
cmd.Dispose()
MYCONNECTION.Close()
weight1.Clear()
date1.Text = ""
time1.Text = ""
weight2.Clear()
date2.Text = ""
time2.Text = ""
netweight.Clear()
vehicleno.Text = ""
custname.Text = ""
contact.Text = ""
Product.Text = ""
charge.Clear()
status.Text = ""
weighttype.Focus()
Call ticket()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
答案 0 :(得分:0)
这样编写您的SQL代码:
COMMAND = "insert into entry ([weight1]) values (@weight1)"
,然后添加如下所示的参数:
cmd.Parameters.Add("@weight1", OleDbType.VarChar, 50).Value = weight1.Text
在SQL中提供参数占位符,然后在添加它时将其用作参数的名称。同时指定数据类型,对于宽度可变的类型,还指定大小。设置Value
或刚刚添加的参数。
在使用ACE OLE DB提供程序时,实际上会忽略参数名称,但是为了使代码清晰起见,应该使用它们。您必须确保以与出现在SQL代码中相同的顺序添加参数。