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

SQL Server 避坑:user 為保留關鍵字,查詢需加中括號

     編輯:程式設計綜合問答

錯誤現象

執行如下 ADO.NET 程式碼時,拋出例外:「'user' 附近有語法錯誤」:

string sql = "select * from user where grade > (select grade from user where id=" + id + ")";

根本原因

user 是 SQL Server 保留關鍵字(系統檢視表 sys.users 等),直接作為資料表名稱會被解析器誤判。必須使用分隔符號(中括號 [] 或雙引號 "")包裹。

修正方案

string sql = "select * from [user] where grade > (select grade from [user] where id = @id)";

並搭配參數化查詢防止注入:

using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    cmd.Parameters.AddWithValue("@id", id);
    // ...
}

常見需加括號的保留字

  • user, order, group, key, index, desc, desc, select, insert, update, delete 等。
  • 完整清單請參考 Microsoft 官方文件「Reserved Keywords (Transact-SQL)」。

最佳實務

  1. 建表時盡量避免使用保留字命名。
  2. 若已存在,所有查詢、預存程序、動態 SQL 均需一致加上 []。
  3. 使用 ORM(EF Core、Dapper)時,透過 [Table("[user]")] 或 Fluent API 指定對應表名,避免手寫 SQL 出錯。

養成「表名、欄名一律加中括號」的習慣,可徹底杜絕此類語法錯誤,提升 SQL 程式碼健壯度。

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