You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 14:30:04