Database 尝试从VB.net插入MS Access

Database 尝试从VB.net插入MS Access,database,vb.net,database-connection,Database,Vb.net,Database Connection,字段“name”可能会导致问题,因为它与OLEDb混淆为保留字。您可以将其包装在[]中以覆盖此字段或重命名数据库中的字段 您没有收到任何错误,因为您将异常隐藏在try…catch块中。您至少应该记录或显示ex.message,以便查看收到的异常 还有,如果你对这一切都不熟悉。花点时间学习使用参数化语句。它不仅是一种更安全的向数据库发送命令的方式,而且还可以减轻很多知道何时将值包装到#或中的问题 编辑: 这样看起来好多了,而且更安全 Dim cmd As OleDbCommand = New Ol

字段“name”可能会导致问题,因为它与OLEDb混淆为保留字。您可以将其包装在[]中以覆盖此字段或重命名数据库中的字段

您没有收到任何错误,因为您将异常隐藏在try…catch块中。您至少应该记录或显示ex.message,以便查看收到的异常

还有,如果你对这一切都不熟悉。花点时间学习使用参数化语句。它不仅是一种更安全的向数据库发送命令的方式,而且还可以减轻很多知道何时将值包装到#或中的问题

编辑:

这样看起来好多了,而且更安全

Dim cmd As OleDbCommand = New OleDbCommand("Insert Into location (locN, type, name, address, City, X, y, streetID) Values (" & Integer.Parse(TextBoxlocN.Text) &
                                           ", '" & TextBoxtype.Text & "', '" & TextBoxname.Text & "','" & TextBoxaddress.Text &
                                           "',  '" & TextBoxCity.Text & "', " & Integer.Parse(TextBoxX.Text) & ", " & Integer.Parse(TextBoxy.Text) &
                                           ", '" & TextBoxstreetID.Text & "')", con)
现在,在执行此操作之前,需要定义每个参数表示的内容。要执行此操作,请使用“参数”集合添加参数及其值:

Dim cmd As OleDbCommand = New OleDbCommand("Insert Into location (locN, type, name, address, City, X, y, streetID) Values (@loc, @type, @name, @addr, @city, @x, @y, @streetID)
现在已经定义了每个参数,可以打开连接并执行语句了


请记住,使用OLEDB,您实际上没有命名参数。它们基本上只是占位符,因此您必须按照参数在语句中出现的顺序添加参数。

任何时候您为命令对象编写查询时,都不应该使用字符串连接(而且应该易于阅读-请参见“我的”),应该使用参数。如果您无法控制字段名,则将每个字段名用括号括起来,例如[name]。最后,在catch中使用Exception,在使用OleDb时肯定不是SqlException。从概念上讲,除了包装字段名之外,我在代码中提到的概念不需要那么详细,而是没有字符串连接和参数的核心概念。请注意如何使用,以使查询易于阅读。

当我开始调试时,它不会给出任何错误,但是当我单击“插入”按钮添加它没有添加到我的数据库中的数据时,它是crashingIs streetID一个数字或字符串?System.data.dll中发生了“System.ArgumentException”类型的未处理异常。其他信息:一个未在ConnectionString中指定OLE DB提供程序。例如,“Provider=SQLOLEDB;”。这是我单击“插入”按钮时得到的连接字符串不正确。您需要告诉连接正确的信息。请查看ConnectionStrings.Com,以了解其外观示例。根据Access的版本,您可能需要ACE.OLEDB或Jet.Oledb4.0提供程序。
Dim cmd As OleDbCommand = New OleDbCommand("Insert Into location (locN, type, name, address, City, X, y, streetID) Values (@loc, @type, @name, @addr, @city, @x, @y, @streetID)
cmd.Parameters.AddWithValue("@loc", Integer.Parse(TextBoxlocN.Text))
cmd.Parameters.AddWithValue("@Type", TextBoxtype.Text)
cmd.Parameters.AddWithValue("@name", TextBoxname.Text)
cmd.Parameters.AddWithValue("@addr", TextBoxAddress.Text)
cmd.Parameters.AddWithValue("@city", TextBoxCity.Text)
cmd.Parameters.AddWithValue("@x", Integer.Parse(TextBoxX.Text))
cmd.Parameters.AddWithValue("@y", Integer.Parse(TextBoxy.Text))
cmd.Parameters.AddWithValue("@StreetID", TextBoxstreetID.Text)