如何对“insert into 语句中的语法错误”进行排序

伊基达狗

对于我的计算机科学项目,我使用 microsoft acccess 数据库使用 Windows 窗体在 Visual Basic 中创建测验应用程序。我所有的选择语句(使用 oledb 连接到数据库)都可以正常工作;但是这个 insert into 语句总是抛出“Insert Into 语句中的语法错误”,但据我所知,它没有任何问题。有问题的表称为“用户”,包含字段“用户ID”、“名字”、“姓氏”、“用户名”、“密码”、“教师”;其中 UserID 是一个自动编号,teacher 是布尔值,其余的是字符串。

当我完成时,密码将被散列,但因此更容易测试它们还不是。

我已经尝试为 UserID 输入值,即使它应该在输入新记录时自动增加一个值。以及创建插入命令的几种不同方法。

Using oCmd As New OleDbCommand("Insert Into Users(FirstName, LastName, Username, Password, Teacher) 
    Values(@firstName, @lastName, @username, @password, 0)", myConnection)
    oCmd.Parameters.Add("@firstName", OleDbType.VarChar, 255).Value = txtFirstName.Text
    oCmd.Parameters.Add("@lastNamee", OleDbType.VarChar, 255).Value = txtLastName.Text
    oCmd.Parameters.Add("@username", OleDbType.VarChar, 255).Value = txtUsername.Text
    oCmd.Parameters.Add("@password", OleDbType.VarChar, 255).Value = txtPassword.Text
    oCmd.ExecuteNonQuery()
End Using

'txt...'.Text 是文本框,用户可以在其中输入他们想要的值的字符串,而 myConnection 是到数据库的连接,该连接已经从其他已运行和终止的命令打开。我希望在用户表中创建一个新记录,并在文本框中输入值;但它只是抛出上述错误。

波波先生

您的 SQL 命令不起作用的真正原因是因为Password它是一个保留字符串,所以应该用反引号 (`) 括起来。我过去也遇到过类似的问题,我花了很长时间才意识到自己的错误。

您还应该使用参数来避免 SQL 注入。最后,您的代码应如下所示:

Using oCmd As New OleDbCommand("INSERT INTO `Users` (FirstName, LastName, Username, `Password`, Teacher) VALUES (@FirstName, @LastName, @Username, @Password, 0)", myConnection)

oCmd.Parameters.Add("@FirstName", OleDBType.VarChar, 63).Value = txtFirstName.Text
oCmd.Parameters.Add("@LastName", OleDBType.VarChar, 63).Value = txtLastName.Text
oCmd.Parameters.Add("@Username", OleDBType.VarChar, 63).Value = txtUsername.Text
oCmd.Parameters.Add("@Password", OleDBType.VarChar, 63).Value = txtPassword.Text

63添加参数时有描述VARCHAR可以有多少个字符服用。您应该将其更改为数据库中变量使用的数量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将图像插入Access表时出现“ insert into语句中的语法错误”

INSERT INTO语句中的语法错误。在Access中运行,而不在VB中运行

OleDbCommandBuilder生成的INSERT INTO语句中的语法错误

INSERT INTO语句中的语法错误。在VB.net 2005中

在Access 2010中的INSERT INTO语句中获取SQL语法错误

asp.net中的INSERT INTO语句中的语法错误

为什么会出现“ INSERT INTO语句中的语法错误”?

如何在case语句中使用流程替换而不出现语法错误?

插入MS Access的INSERT语句中的语法错误

INSERT INTO语句中的语法错误

INSERT INTO语句中的语法错误。(VB和ACCESS 2013)

错误:command.ExecuteNonQuery()中的INSERT INTO语句中的语法错误

参数化的INSERT INTO语句中的VB.NET语法错误

.net,MS Access,INSERT INTO语句中的语法错误

在INSERT INTO语句中获取语法错误

将文本框值添加到单个记录:INSERT INTO语句中的语法错误

使用Access和Pyodbc的INSERT语句中的语法错误

INSERT INTO 语句中的语法错误 OleDbException 未由用户代码处理

插入数据时在 INSERT INTO 语句中遇到类型语法错误的异常

OleDbException: INSERT INTO 语句中的语法错误

insert into 语句中的语法错误 - 在 VB.NET 中

INSERT INTO 语句中的语法错误。command.executeNonQuery(); 请帮忙

INSERT INTO 语句中的 PHP 语法错误。SQLExecDirect 中的 SQL 状态为 37000

如何防止我的代码在我的 else 语句中产生语法错误

INSERT INTO 语句中的语法错误 Insert in Access

带有 TIME 数据类型的 MySQL INSERT 语句中的语法错误

MySQL INSERT INTO 语句中的语法错误

“INSERT INTO 语句中的语法错误”错误 - 错误是什么?

语法错误 INSERT INTO 语句 - ACCESS DB