2009-12-29 6 views
1

테이블의 행을 업데이트하려고하는 간단한 SQL Server CE 데이터베이스가 있습니다.SQL Server CE Where 절 문제

UPDATE ConsoleUsage 
SET TotalCircuits = 123 

을하지만, 위의 명령 업데이트 모든 행, 그래서 내가 원하는 것은 이것이다 : 다음 명령은 작동

UPDATE ConsoleUsage 
SET TotalCircuits = 123 
WHERE Index = 912 

목적은 테이블의 단일 행을 업데이트하는 것입니다.

오류 코드 : 80040E37
메시지 : [UPDATE ConsoleUsage SET TotalCircuits = 123 색인 = 912]
사소한 잘못하지만이 명령은 다음과 같은 암호 같은 오류 메시지 (여기에 MS는 형식을 제안 사용)를 제공, 실패합니다. : 0
출처 : SQL Server 2005 Mobile Edition ADO.NET 데이터 공급자
오류. 평가. : 색인 = 912

은 "인덱스"열이 테이블에 인덱스입니다 UPDATE ConsoleUsage SET TotalCircuits = 123, 나는 모든 철자를 확인했지만 내가 함께하고 cmd.CommandType = CommandType을하지 않고 모두이 시도했습니다 . TableDirect; 및 cmd.IndexName = "MainIndex";

무엇이 누락 되었습니까?

+0

업데이트 :. WHERE 절에 다른 필드를 사용하여 시도,이 일했다. 그래서 내 "Index"칼럼의 이름이나 타입에 문제가 있습니다. 그것은 "Primary Key"입니다 (그러나 중요할까요?), smallint를 입력하십시오. – toml

+0

"Index"라는 이름을 다른 것으로 변경하고 (예 : "Id") 시도하십시오. 작동합니까? – Sasha

+0

DateCode라는 새 열을 Index와 동일한 데이터로 추가했으나 기본 키가 아닌 이제는 작동합니다. 나는 모든 테이블 (나는 생각한다)이 프라이 머리 키를 가져야하므로 인덱스를 그 자리에 남겨 둘 것이다. 낭비되는 공간에 대해 걱정하지 않고,이 테이블에는 많은 행이 없습니다. – toml

답변

1

"색인"은 예약어라고 생각합니다. 괄호로 주변보십시오 :

UPDATE ConsoleUsage SET TotalCircuits = 123 WHERE [Index] = 912 
+0

그와 같은 결과를 시도했습니다 – toml

1

를 테이블 구조를 모른 채 (당신이이 테이블에 대한 스크립트를 만들 게시 할 수 있을까?) 여기에 내가 시도 할 것 몇 가지 있습니다 :

넣어 대괄호 ([]) 테이블의 스키마 이름을 dbo. [ConsoleUsage] 대신 [ConsoleUsage] 테이블에 넣을 경우 [Index]가 char 필드인지 확인하십시오. 예인 경우 912 대신 '912'를 사용하십시오.

약간의 진술을 시도하십시오 : UPDATE T SET의 TotalCircuits = DBO 123 [ConsoleUsage] T WHERE T. [색인] = 912

+0

이 모든 것을 시도해보십시오. 동일한 결과. – toml

+0

테이블에 대한 생성 스크립트를 게시 할 수 있습니까? – Sasha

+0

"create script"를 어디에서 찾을 지 모르겠다. (studio '05를 사용하여) 디자이너에서 테이블을 만들었고, 개별 get/set 메서드와 Add 메서드를 dataset.Designer.cs 파일에서 복사했다. (서버 탐색기에서 표를 끌어서 채워 넣은 .xsd 파일의 스튜디오)를 내 코드에 추가하십시오. – toml