2012-07-13 27 views
5

estoy recibiendo un errorconsulta SQL: incorrecta Error de sintaxis

sintaxis incorrecta cerca de la palabra clave WHERE

con la siguiente instrucción SQL:

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

¿Qué ocurre?

+0

Tenga cuidado al combinar cadenas en un comando: es posible que necesite un espacio justo antes de los "Valores". –

Respuesta

3

Creo que ha escrito una consulta incorrecta. actualización de la siguiente manera determinada consulta:

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

¿Lo has probado? Creo que no debería funcionar: No debería haber DONDE en una instrucción INSERT ... – Hinek

+0

tienes razón ... Todavía no lo he probado. ahora lo he corregido –

+0

sí lo he probado y funciona, gracias por su ayuda –

7

En SQL instrucciones de inserción no tienen una cláusula WHERE (lo cual tiene sentido, porque el registro no está allí todavía). Coloque los ID junto con todos los demás valores si desea insertar un nuevo registro, o use una declaración UPDATE si desea cambiar un registro existente.

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

Aquí ya go.

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

@AVD - la palabra clave INTO es opcional (en SqlServer) –

0

está usando el where cláusula que no se puede utilizar en Insert comunicado.

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