2012-07-13 60 views
5

我得到一个错误SQL查询:不正确的语法错误

不正确的语法关键字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); 

有什么不对?

+0

当您将字符串组合到命令中时,请注意:您可能需要在“值”之前留出空格。 – 2012-07-13 11:58:19

回答

3

我认为你写了错误的查询。 更新下面给出的查询:

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

你测试过了吗?我认为它不应该工作:在INSERT语句中应该没有WHERE ... – Hinek 2012-07-13 11:49:39

+0

你是对的..我还没有测试过。现在我已经纠正它 – 2012-07-13 11:54:21

+0

是ive测试它,它的工作原理,感谢您的帮助 – 2012-07-13 12:00:51

7

在SQL INSERT语句没有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

这里亚去。

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

@AVD - INTO关键字是可选的(在SqlServer中) – 2012-07-13 11:55:48

0

您正在使用,你不能在Insert语句中使用where条款。

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