System.Data.SqlClient.SqlException:Transaction关键字附近语法错误如何解决
问题原因
Transaction 属于SQL Server的保留关键字,你在SQL语句中直接将其作为表名使用时,数据库会将其判定为语法关键字而非表标识符,因此触发近Transaction关键字的语法报错。
解决方案
将两处SQL语句里的表名 DB.Transaction 用方括号包裹,明确标记为自定义标识符即可,修正后代码如下:
public static class InvestorProcessor { public static int CreateInvestment(int id, string tickerSymbol, Sale transactionType, string companyName, int quantity, int sharePrice) { Investor data = new Investor { Id = id, TickerSymbol = tickerSymbol, TransactionType = transactionType, CompanyName = companyName, Quantity = quantity, SharePrice = sharePrice }; string sql = @"insert into DB.[Transaction] (TickerSymbol, TransactionType, CompanyName, Quantity, SharePrice) values (@TickerSymbol, @TransactionType, @CompanyName, @Quantity, @SharePrice);"; return SqlDataAccess.SaveData(sql, data); } public static List<Investor> LoadInvestors() { string sql = @"select Id, TickerSymbol, TransactionType, CompanyName, Quantity, SharePrice from DB.[Transaction];"; return SqlDataAccess.LoadData<Investor>(sql); } }
补充建议
如果可以调整表结构命名,建议将表名修改为非保留关键字的名称(比如TransactionRecord、InvestmentTransaction等),可以避免后续再出现同类语法冲突。
内容的提问来源于stack exchange,提问作者Andy Wilson
相关产品推荐
相关产品推荐

