System.Data.OleDb.OleDbException:'INSERT INTO语句中的语法错误。

时间:2019-12-11 00:42:50

标签: vb.net visual-studio

我试图在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")

任何帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

当命令生成器发生此错误时,通常是因为一个或多个列名是保留字或包含空格或其他特殊字符。在您的情况下,您可能有一个保留字,即Password,在Email Address中还有一个空格。

首选选择是避免使用此类列名。在这种情况下,Email Address应该为EmailAddress,就像在VB中用作标识符一样。 Password不一定有明显的替代方案,除了密码绝不应该以明文形式存储,因此真实的应用程序应该对密码进行哈希处理,然后该列可以命名为PasswordHash

否则,您可以设置命令构建器的QuotePrefixQuoteSuffix属性,以便对列名进行转义。对于您的情况,“ [”和“]”是您可能应该使用的值,即

cb.QuotePrefix = "["
cb.QuoteSuffix = "]"