2012-07-13 61 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);