2012-07-13 24 views
5

Dostaję błądSQL: Błędne Błąd składni

Niepoprawna składnia w pobliżu słowo kluczowe GDZIE

z następującą instrukcję SQL:

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

Co się stało?

+0

Uważaj, gdy łączysz ciągi w komendę: możesz potrzebować spacji tuż przed "Wartościami". –

Odpowiedz

3

Myślę, że napisałeś nieprawidłowe zapytanie. Aktualizacja poniżej danego zapytania:

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

Przetestowałeś to? Myślę, że to nie powinno działać: nie powinno być GDZIE w instrukcji INSERT ... – Hinek

+0

masz rację ... Jeszcze nie testowałem. teraz poprawiłem to –

+0

tak, przetestowałem to i działa, dzięki za pomoc –

7

W SQL INSERT nie mają WHERE klauzuli (co ma sens, ponieważ płyta nie jest tam jeszcze). Jeśli chcesz wstawić nowy rekord, umieść identyfikatory razem ze wszystkimi innymi wartościami, jeśli chcesz wstawić nowy rekord, lub użyj instrukcji UPDATE, jeśli chcesz zmienić istniejący rekord.

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

lub

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

Tu ya go.

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

@AVD - słowo kluczowe INTO jest opcjonalne (w SqlServer) –

0

Używasz where klauzuli których nie można używać w Insert oświadczeniu.

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