首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

ASP 連接 Access 數據庫:動態拼接 SQL 表名時的空格陷阱

     編輯:程式設計綜合問答

在 ASP 中動態構建 SQL 語句時,表名作為變量拼接最容易忽略關鍵字前的空格,導致語法錯誤。本文通過實例演示正確的字符串拼接技巧。

錯誤代碼


Dim km
km = "東方不敗"
strSql = "Update " & km & "Set Sfhwhy='Y' where name='" & hy & "'"
' 生成 SQL: Update 東方不敗Set Sfhwhy='Y' where name='...'  ← 缺少空格!

錯誤現象

  • Access 報錯:「Syntax error in UPDATE statement」
  • 直接寫死表名 "Update 東方不敗 Set..." 卻正常
  • 初學者以為變量拼接有特殊限制

正確拼接


strSql = "Update " & km & " Set Sfhwhy='Y' where name='" & hy & "'"
' 關鍵:km 後、Set 前必須有空格

最佳實踐:參數化查詢(雖然表名無法參數化)


' 表名無法參數化,但值必須參數化
strSql = "Update [" & km & "] Set Sfhwhy=@p1 where name=@p2"
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn
cmd.CommandText = strSql
cmd.Parameters.Append cmd.CreateParameter("@p1", adVarChar, adParamInput, 1, "Y")
cmd.Parameters.Append cmd.CreateParameter("@p2", adVarChar, adParamInput, 50, hy)
cmd.Execute

注意:Access 表名含中文/空格需用 [] 括起。

調試技巧:輸出 SQL 字符串


Response.Write strSql
Response.End
' 瀏覽器顯示生成的完整 SQL,肉眼檢查空格、引號、關鍵字

總結

動態拼接 SQL 時,關鍵字之間必須有空格。養成 Response.Write strSql 調試習慣,90% 的語法錯誤立現。值類參數務必使用參數化查詢防注入,表名/列名無法參數化時嚴格驗證白名單。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved