2014-02-25 2 views
1

이 간단한 쿼리를 실행하려고합니다. 쿼리가 오류와 함께 실패하지 않고 대신 성공적으로 실행 된 것처럼 보입니다. 그러나 DB를 새로 고치면 삽입이 발생하지 않습니다. 연결 상태가 좋고 한 행에 영향을 미쳤음을 반환합니다.SQL Server Compact를 삽입 할 수 없습니다.

다음은 잘못된 것입니까?

using(SqlCeConnection Con = new SqlCeConnection(Properties.Settings.Default.dbConnectionString)) 
{ 
    Con.Open(); 
    SqlCeCommand Query = new SqlCeCommand("INSERT INTO DataTable2(num) VALUES(5)",Con); 

    try 
    { 
     Query.ExecuteNonQuery(); 
     MessageBox.Show(Query.ExecuteNonQuery().ToString()); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.Message); 
    } 
} 
+0

해당 명령을 트랜잭션에 연결 한 다음 해당 트랜잭션을 커밋하십시오. 저는 SqlCe로 작업 할 때 그렇게해야한다고 생각합니다. 그러나 그것은 확실하지 않습니다. – McAden

+0

INSERT 문을 두 번 실행하면이 권한을 알 수 있습니까? conn 문자열은 어떻게 생겼습니까? –

+0

연결 문자열은 무엇입니까? _ DB_를 새로 고치는 것의 의미는 무엇입니까? – Steve

답변

0

당신은 당신이 다른 위치로 해결 있음을 유의 DataDirectory 대체 문자열을 사용합니다. WEB Apps 용 APP_DATA, WinForms 용 BIN\DEBUG 응용 프로그램.

업데이트 된 데이터베이스가 해당 디렉토리에있는 것으로, 아마도 잘못된 데이터베이스를보고있는 것입니다. 서버 탐색기 나 SQL Server Compact Toolbox에서 사용 된 연결이 업데이트 된 실제 데이터베이스를 가리키고 프로젝트 폴더에있는 연결이 아니라는 것을 확인하십시오.

+0

완벽하고 이제는 분명해 보입니다. VS 내에서 DB를 새로 고치면 프로그램을 테스트 할 때 실행 된 쿼리에 의해 수정되지 않은 데이터베이스가 새로 고쳐집니다. – user1202278

+0

그리고 프로젝트 파일 사이에 db가 있으면 프로젝트 폴더의 빈 데이터베이스로 작업 데이터베이스를 덮어 쓰지 않도록 Output Directory에 복사 속성을 선택하십시오 – Steve

관련 문제