[英]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.