正如其他答案已经解释的那样,您需要在包含空格的列名称周围使用方括号,但是还需要为字段添加一个值,否则您将无法执行该命令。
我将尝试展示一个完整的例子
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来加载数据集。