【问题标题】:SQL query: Incorrect Syntax errorSQL 查询:不正确的语法错误
【发布时间】:2012-07-13 11:45:21
【问题描述】:

我遇到了一个错误

关键字 WHERE 附近的语法不正确

使用以下 SQL 语句:

SqlCommand scInsertCostSpilt = new SqlCommand("INSERT INTO [ASSETS_CC] ([DEPT], [CC], [PER_CENT]) WHERE [ASSET_NO] = @AssetNumber)" +
"Values (@AssetNumber, @Dept, @CC, @PerCent)" , DataAccess.AssetConnection);

怎么了?

【问题讨论】:

  • 在将字符串组合成命令时要小心:您可能需要在“值”之前留一个空格。

标签: c# sql syntax


【解决方案1】:

在 SQL 插入语句中没有 WHERE 子句(这是有道理的,因为记录还没有)。如果要插入新记录,请将 ID 与所有其他值放在一起,如果要更改现有记录,请使用 UPDATE 语句。

INSERT INTO [ASSETS_CC] ([ASSET_NO], [DEPT], [CC], [PER_CENT]) 
VALUES (@AssetNumber, @Dept, @CC, @PerCent)

UPDATE [ASSETS_CC]
SET [DEPT] =  @Dept, [CC] = @CC, [PER_CENT] = @PerCent
WHERE [ASSET_NO] = @AssetNumber

【讨论】:

    【解决方案2】:

    我认为你写错了查询。 更新如下给定查询:

    INSERT INTO [ASSETS_CC] ([DEPT], [CC], [PER_CENT]) Values ( @Dept, @CC, @PerCent) 
    

    【讨论】:

    • 你测试了吗?我认为它不应该工作:在 INSERT 语句中不应该有 WHERE ...
    • @DynamicVariable 奇怪的是它应该可以工作,因为名称列表上的项目数与值列表上的项目数不同。
    【解决方案3】:

    给你。

    SqlCommand scInsertCostSpilt = new SqlCommand("INSERT ASSETS_CC (DEPT, CC, PER_CENT) Values (@AssetNumber, @Dept, @CC, @PerCent)" , DataAccess.AssetConnection);
    

    【讨论】:

    • @AVD - INTO 关键字是可选的(在 SqlServer 中)
    【解决方案4】:

    您正在使用不能在Insert 语句中使用的where 子句。

    SqlCommand scInsertCostSpilt = new SqlCommand("INSERT INTO ASSETS_CC (DEPT, CC, PER_CENT) Values (@AssetNumber, @Dept, @CC, @PerCent)" , DataAccess.AssetConnection);
    

    【讨论】:

      猜你喜欢
      • 2013-12-15
      • 2017-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      相关资源
      最近更新 更多