簡體   English   中英

VBA中的SQL語句錯誤

[英]SQL statement error in VBA

我有一個包含插入語句的 Access 表單。

該代碼效果很好,但是當我輸入包含單引號'的文本時出現問題:

strSQL = "INSERT INTO student (stname) VALUES ('" & stname.Value & "')"

DoCmd.RunSQL strSQL

stname.value = Ra'ed or ka'l

那么語句就出錯了

考慮一個DAO 參數化查詢,它允許在沒有引號的情況下綁定值。 訪問查詢允許可以與外部值綁定的PARAMETERS子句:

Dim db As Database
Dim qdef As QueryDef
Dim strSQL As String

Set db = CurrentDb

' PREPARE STATEMENT (STRING CAN BE A SAVED QUERY)
strSQL = "PARAMETERS [strValParam] Text(255);" _
            & " INSERT INTO student (stname) VALUES ([strValParam]);"

' INITIALIZE QUERYDEF OBJECT (REPLACE EMPTY STRING "" FOR SAVED QUERY NAME AND NO STRSQL)
Set qdef = db.CreateQueryDef("", strSQL)

' BIND VALUE (SINGLE/DOUBLE/SPECIAL CHARS ALL ALLOWED)
qdef!strValParam =  stname.Value

' EXECUTE ACTION QUERY
qdef.Execute 

Set qdef = Nothing
Set db = Nothing

一般來說,我必須同意 marc_s 關於 SQL 注入警告。 但是,對於非任務關鍵型數據庫的快速而骯臟的解決方案,您不介意其他用戶可能侵入或以其他方式弄亂,您可以使用

strSQL = "INSERT INTO student (stname) VALUES ('" & Replace (stname.Value, "'", "''") & "')"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM