2012-07-13 21 views
5

sto ricevendo un erroreSQL: non corretta Errore di sintassi

sintassi non corretta presso la parola chiave WHERE

con la seguente istruzione SQL:

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

Cosa c'è di sbagliato?

+0

Controllare quando si combinano le stringhe in un comando: potrebbe essere necessario uno spazio prima dei "Valori". –

risposta

3

Penso che tu abbia scritto una query errata. Update come di seguito determinata query:

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

Lo hai provato? Penso che non dovrebbe funzionare: non ci dovrebbe essere DOVE in una dichiarazione INSERT ... – Hinek

+0

hai ragione .. Non ho ancora testato. ora l'ho corretto –

+0

sì l'ho provato e funziona, grazie per il vostro aiuto –

7

In SQL le istruzioni INSERT non hanno una clausola WHERE (che ha un senso, perché il record non c'è ancora). Puoi inserire gli ID insieme a tutti gli altri valori se desideri inserire un nuovo record o utilizzare un'istruzione UPDATE se desideri modificare un record esistente.

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

o

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

Qui ya go.

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

@AVD - la parola chiave INTO è facoltativa (in SqlServer) –

0

Si utilizza where clausola che non è possibile utilizzare in Insert dichiarazione.

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