vb.net - vb.net 插入到 accs
问题描述
它说 INSERT INTO 语法错误
Connection.Open()
Query = "INSERT INTO Admin (Username, Password, FullName, Office) Values ('" & TXT_USERNAME.Text & "','" & TXT_PASSWORD.Text & "','" & TXT_NAME.Text & "','" & CB_UNIT.Text & "');"
Command = New OleDbCommand(Query, Connection)
Command.ExecuteNonQuery()
解决方案
这种情况下的具体问题是Password
Jet/Access SQL 中的保留字。为了使用保留字作为标识符,您需要对其进行转义。在 Jet/Access SQL 中,这意味着将其括在括号中:
INSERT INTO Admin (Username, [Password], FullName, Office) Values (...)
有些人喜欢逃避所有标识符,只是为了安全起见。
不过那里也有其他问题。最重要的是,您应该学习如何在 ADO.NET 代码中使用参数。就目前而言,如果某人的全名是“John O'Brien”,您的代码会因另一个语法错误而使您的应用程序崩溃。使用参数可以避免单引号、日期和数字格式的问题,最重要的是,可以防止 SQL 注入攻击。立即学习正确的方法。
推荐阅读
- java - SpringBootApplication在子包下找不到bean
- angular - 通过 Angular Renderer2 编辑画布不起作用
- android - 如何取消收集协程StateFlow?
- sql-server - SQL Server 通过分组数据使用多列排序顺序
- python - 为什么幻影js浏览器打不开?
- javascript - 收到新的 Google 表单提交后,如何忽略向具有价值的行发送电子邮件?
- python-3.x - 无法按指标过滤(comparisonValue 未在 400 值中重新识别
- javascript - 从 json 文件导入时,如何使我的 i18n-js 文本正确呈现?
- spring-boot - 即使在将成功的身份验证添加到 SecurityContextHolder 后也会出现 401 错误
- java - 使用子进程捕获输入和输出(运行 java 的 Python)