2012-07-13 67 views
5

Tôi nhận được một lỗiSQL truy vấn: sai lỗi cú pháp

cú pháp không chính xác gần mệnh đề WHERE

với câu lệnh SQL sau:

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

Có chuyện gì vậy?

+0

Xem khi bạn kết hợp chuỗi thành lệnh: bạn có thể cần khoảng trắng ngay trước "Giá trị". –

Trả lời

3

Tôi nghĩ bạn đã viết truy vấn sai. Update như sau truy vấn cụ thể:

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

Bạn đã thử nghiệm chưa? Tôi nghĩ rằng nó không nên làm việc: Không nên có WHERE trong một tuyên bố INSERT ... – Hinek

+0

bạn là đúng .. Tôi chưa thử nghiệm chưa. bây giờ tôi đã sửa chữa nó –

+0

có ive kiểm tra nó và nó hoạt động, nhờ sự giúp đỡ của bạn –

7

Trong SQL báo cáo chèn không có một điều khoản WHERE (có ý nghĩa, bởi vì kỷ lục không phải là có được nêu ra). Bạn đặt các ID cùng với tất cả các giá trị khác nếu bạn muốn chèn một bản ghi mới hoặc sử dụng câu lệnh UPDATE nếu bạn muốn thay đổi bản ghi hiện có.

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

hoặc

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

Đây ya đi.

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

@AVD - từ khóa INTO là tùy chọn (trong SqlServer) –

0

Bạn đang sử dụng mệnh đề where mà bạn không thể sử dụng trong tuyên bố Insert.

SqlCommand scInsertCostSpilt = new SqlCommand("INSERT INTO ASSETS_CC (DEPT, CC, PER_CENT) Values (@AssetNumber, @Dept, @CC, @PerCent)" , DataAccess.AssetConnection); 
Các vấn đề liên quan