Vb.net Can';我搞不懂语法错误是什么
好的,我通过一个精选的案例来说明这一点 在案例0中,它运行:Vb.net Can';我搞不懂语法错误是什么,vb.net,ms-access,Vb.net,Ms Access,好的,我通过一个精选的案例来说明这一点 在案例0中,它运行: Sql = "INSERT INTO Devices (" & "[Asset Number], [Service Tag], Manufacturer, ModelName, Location, Room, Cart, [Purchase Date], Department, [Device Type]" & ") VALUES ( ?, ?, ?, ?, ?, ?, ?,
Sql = "INSERT INTO Devices (" &
"[Asset Number], [Service Tag], Manufacturer, ModelName, Location, Room, Cart, [Purchase Date], Department, [Device Type]" &
") VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
'Query Parameteres.
Using cmd As New OleDb.OleDbCommand(Sql, dbConn)
'Have to guess at column types/lengths here. Use actual types/lengths from your DB
cmd.Parameters.Add("@Asset Number", OleDbType.Integer).Value = AssetNum
cmd.Parameters.Add("@Service Tag", OleDbType.VarChar, 50).Value = ServTag
cmd.Parameters.Add("@Manufacturer", OleDbType.VarWChar, 255).Value = Manu
cmd.Parameters.Add("@Model", OleDbType.VarWChar, 50).Value = Model
cmd.Parameters.Add("@Location", OleDbType.VarWChar, 30).Value = Location
cmd.Parameters.Add("@Room", OleDbType.VarChar, 5).Value = Room
cmd.Parameters.Add("@Cart", OleDbType.VarChar, 2).Value = Cart
cmd.Parameters.Add("@Purchase Date", OleDbType.Date).Value = PurchDate
cmd.Parameters.Add("@Department", OleDbType.VarWChar, 50).Value = Department
cmd.Parameters.Add("@Device Type", OleDbType.VarChar, 255).Value = DeviceType
cmd.ExecuteNonQuery()
End Using
在案例1中,它运行:
Sql = "INSERT INTO MVNTA (" &
"[Serial Number], [Ethernet Mac], [Wlan Mac], Imei, ESN, HEX, DEC, Phone, [NTA Tag], Manufacturer, Model)" &
")VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"
'Query Parameteres.
Using cmd As New OleDb.OleDbCommand(Sql, dbConn)
'Have to guess at column types/lengths here. Use actual types/lengths from your DB
cmd.Parameters.Add("@Serial Number", OleDbType.VarChar, 255).Value = ServTag
cmd.Parameters.Add("@Ethernet Mac", OleDbType.VarChar, 255).Value = Ether
cmd.Parameters.Add("@WLan Mac", OleDbType.VarChar, 255).Value = WLan
cmd.Parameters.Add("@IMEI", OleDbType.VarChar, 255).Value = IMEI
cmd.Parameters.Add("@ESN", OleDbType.VarChar, 255).Value = ESN
cmd.Parameters.Add("@Hex", OleDbType.VarChar, 255).Value = HEX
cmd.Parameters.Add("@DEC", OleDbType.VarChar, 255).Value = DEC
cmd.Parameters.Add("@Phone", OleDbType.VarWChar, 255).Value = Phone
cmd.Parameters.Add("@NTA Tag", OleDbType.Integer).Value = AssetNum
cmd.Parameters.Add("@Manufacturer", OleDbType.VarWChar, 255).Value = Manu2
cmd.Parameters.Add("@Model", OleDbType.VarWChar, 50).Value = Model2
cmd.ExecuteNonQuery()
End Using
案例1有一个语法错误,但是当我比较它们时,我找不到问题所在。
我比较了数据库中的长度,它们是正确的。虽然我不完全理解varchar vs varwchar,但我认为问题不在于此。案例0正在用于插入到设备表中
我还将该语句直接放入数据库,修复了一些小问题,并运行了它。将其放回我的应用程序代码后,语法错误返回。
HEX
和DEC
在OleDb下。将这些名字用方括号括起来
并删除附加的括号
这里看起来像一个额外的括号——“代码>模型”( >代码> DEC/代码>是一个保留词;<代码> HEX 可以,它不在我正在查看的列表中,但因为它是VB函数,所以我会逃避它。谢谢。甚至没有考虑过我使用保留词的想法。
Sql = "INSERT INTO MVNTA (" &
"[Serial Number], [Ethernet Mac], [Wlan Mac], Imei, ESN, [HEX], [DEC], Phone, [NTA Tag], Manufacturer, Model)" &
" VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);"