尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题

Posted

技术标签:

【中文标题】尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题【英文标题】:Trying to use VB to automate some queries. Running into what looks like a string issue 【发布时间】:2010-05-10 16:11:26 【问题描述】:

我正在使用 MS Access 2003,我正在尝试使用 VB 一次执行几个查询。当我在 SQL 中写出查询时,它工作正常,但是当我尝试在 VB 中执行时,它要求我为 DEPA“输入参数值”,然后是 DND(这是我拥有的两个字符串的前几个字母)。代码如下:

Option Compare Database

Public Sub RemoveDupelicateDepartments()

Dim oldID As String
Dim newID As String
Dim sqlStatement As String


oldID = "DND-01"
newID = "DEPA-04"

sqlStatement = "UPDATE [Clean student table] SET [HomeDepartment]=" & newID & " WHERE [HomeDepartment]=" & oldID & ";"

DoCmd.RunSQL sqlStatement & ""

End Sub

在我看来,它好像将字符串接收到 - 然后没有其他内容。我不知道,这就是我问lol的原因。我的代码应该是什么样的?

【问题讨论】:

不要使用字符串连接来构建这样的查询。 好的,还有其他方法可以构建此查询吗? 还是更像是一种“坏习惯”? @Jeff - newId 和 oldId 是整数吗? 不,它们是字符串。问题已经回答了,我只是还没有注册来标记它 【参考方案1】:

使用 (') 字符设置值的开始和结束

sqlStatement = "UPDATE [Clean student
table] SET [HomeDepartment]='" & newID
& "' WHERE [HomeDepartment]='" & oldID
& "';"

【讨论】:

因为文字查询类似于“...SET field = 'abc'...”而不是“...SET field = abc...”。如果您尝试直接在 Access 中运行第二个(不带引号的)查询,您将看到相同的错误。 啊,非常感谢!这回答了我所有的问题(除了 Coehoorn 先生让我现在想知道的问题:P) Joel 的观点是,您可以执行用户为您的变量提供的任意数据。他假设很多,但他有一个观点。有关该问题的详细讨论,请参阅 ***.com/questions/512174/non-web-sql-injection。【参考方案2】:

您可能希望在 ID 周围插入引号。

【讨论】:

以上是关于尝试使用 VB 自动执行一些查询。遇到看起来像字符串的问题的主要内容,如果未能解决你的问题,请参考以下文章

VB.NET 中的 SQL 选择查询

ArgumentException:在字符 xx 处遇到“”,但应为:[]

自动或定期备份 mysql 数据

VB Postmessage发送字符串问题

vb.Net & Access 是/否 sql 执行错误

SQL 新手并遇到语法问题 (VB.NET)