所以即时通讯试图添加字段到数据库。它是.mdb数据库,可以通过Microsoft访问。
该表的名称为“联系人”。
Dim con As New OleDb.OleDbConnection
Dim dbProvider As String
Dim dbSource As String
Dim ds As New DataSet
Dim da As OleDb.OleDbDataAdapter
Dim sql As String
dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
dbSource = "Data Source= C:\Users\Owner\Desktop\Contacts.mdb"
con.ConnectionString = dbProvider & dbSource
con.Open()
sql = "INSERT INTO Contacts (FName, LName, Age, Address Line 1, Address Line 2, City, State, Zip, Home Phone, Work Phone, Email, Sex) VALUES (a, b, c,d,e,f,g,h,i,j,k)"
da = New OleDb.OleDbDataAdapter(Sql, con)
da.Fill(ds, "Contacts")
我的错误是INSERT INTO语句中的语法错误。毫无意义。我究竟做错了什么?
编辑*我通过在建议的certian字段周围添加[]解决了我的原始问题,谢谢。现在我得到...
没有为一个或多个必需参数提供值。
数据库具有一个主ID字段,该字段会自动递增,这会发生任何变化吗?
正如其他答案已经解释的那样,您需要在包含空格的列名称周围使用方括号,但是还需要为字段添加一个值,否则您将无法执行命令。
我将尝试展示一个完整的例子
Dim dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;"
Dim dbSource = "Data Source= C:\Users\Owner\Desktop\Contacts.mdb"
Dim sql = "INSERT INTO Contacts (FName, LName, Age, " & _
"[Address Line 1], [Address Line 2], City, State, Zip, " & _
"[Home Phone], [Work Phone], Email, Sex) " & _
"VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
Using con = New OleDb.OleDbConnection(dbProvider & dbSource)
Using cmd = new OleDb.OleDbCommand(sql, con)
con.Open()
cmd.Parameters.AddWithValue("@p1", "Value For FName")
cmd.Parameters.AddWithValue("@p2", "Value For LName")
cmd.Parameters.AddWithValue("@p3", Convert.ToInt32("Value For Age"))
.... and so on for the other parameters .....
cmd.ExecuteNonQuery()
End Using
End Using
在此示例中,我为参数(?)插入了12个占位符,然后在所需的12个参数中添加了前3个参数。请注意,对于OleDb,参数集合仍然需要添加名称(@pX),但是在执行查询时,将按照占位符相同的顺序来选择参数值。
另外,我还使用了Using语句来关闭和处置连接和命令之类的一次性对象。
最后,通常使用OleDbCommand的ExecuteNonQuery执行插入查询,并且在不执行SELECT查询的情况下,无需使用OleDbAdapter并调用Fill来加载数据集
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句