0

我正在 Access 数据库中构建一个批处理表,以保存用户单击提交按钮(在表单上)后要处理的表单中的操作。

我唯一担心的是 SQL 语句本身将包含文本限定符。当我提交要存储在数据库中的 sql 语句时,我必须将 sql 字符串包装在文本限定符中,并且我想确保在批处理表中执行插入语句时语句限定符不会被转义。

示例:SQL 语句(操作语句)

INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')

SQL 语句(批量存储)

INSERT INTO tblBatch(act, sql) VALUES (0, 'INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')')

最终,我将遍历 Batch 表并仅执行该字段sql并更新另一个字段以表示其执行,但我想确保该sql字段本身与要执行的 sql 语句同质,而不会丢失字符串限定符。

已编辑(2012-08-13 @ 13:42pm CST)

为了让您了解如何在此处合并此嵌套,方法如下:

Public Sub BatchAdd(ByRef db As Database, action As BatchAction, sql As String)
    Dim bsql As String
    Dim bact As Integer: bact = CInt(action)
    bsql = SQLInsert("tblBatchTransaction", _
                    "action, txt", _
                    (CStr(bact) & ",'" & sql & "'"))
    db.Execute bsql
End Sub

SLQInsert 只是构建一个 SQL 插入语句。不,您可以看到我可能会出现字符串限定符问题。

4

1 回答 1

0

如果我正确理解您的问题,您希望以可以按原样运行的方式存储您的 SQL 语句。但是,内部单引号正在阻碍。尝试用双引号替换外部单引号:

INSERT INTO tblBatch(act, sql) VALUES (0, "INSERT INTO tblGrpLoc (gid, txt) VALUES (2, 'Select * From tblInformation')")
于 2012-08-13T18:26:42.043 回答