我试图在Visual Basic中创建一个创建按钮,以便记录进入我的数据库,但是会出现此错误:
System.Data.OleDb.OleDbException:'INSERT INTO语句中的语法错误。
我的代码在这里,我在da.Update(ds, "Test")
上收到错误消息
Dim cb As New OleDb.OleDbCommandBuilder(da)
Dim dsNewRow As DataRow
dsNewRow = ds.Tables("Test").NewRow()
dsNewRow.Item("Username") = txtUsername.Text
dsNewRow.Item("Password") = txtPassword.Text
dsNewRow.Item("Email Address") = txtEmailAddress.Text
ds.Tables("Test").Rows.Add(dsNewRow)
da.Update(ds, "Test")
任何帮助都会很棒。
答案 0 :(得分:1)
当命令生成器发生此错误时,通常是因为一个或多个列名是保留字或包含空格或其他特殊字符。在您的情况下,您可能有一个保留字,即Password
,在Email Address
中还有一个空格。
首选选择是避免使用此类列名。在这种情况下,Email Address
应该为EmailAddress
,就像在VB中用作标识符一样。 Password
不一定有明显的替代方案,除了密码绝不应该以明文形式存储,因此真实的应用程序应该对密码进行哈希处理,然后该列可以命名为PasswordHash
。
否则,您可以设置命令构建器的QuotePrefix
和QuoteSuffix
属性,以便对列名进行转义。对于您的情况,“ [”和“]”是您可能应该使用的值,即
cb.QuotePrefix = "["
cb.QuoteSuffix = "]"