2010-06-14 5 views
0

C# 응용 프로그램에서 로컬 SQLITE 데이터베이스 파일에 데이터를 삽입하려고합니다. 트랜잭션은 오류를 발생시키지 않지만 데이터는 삽입되지 않습니다. 동일한 삽입 문은 쿼리 분석기 내에서 작동합니다.SQLite - INSERT가 오류를 반환하지 않지만 데이터가 삽입되지 않았습니다.

커밋을 수행해야합니까? Commit 메서드가 있습니까? 명령의 트랜잭션 속성이 null

..

var command = new SQLiteCommand(insert.BuildInsert(tableName,keyValuePairs),Connection); 

      command.ExecuteNonQuery(); 

업데이트 : 또한 SQLiteTransaction 내 SQLiteCommand을 assciate을 시도했지만 운이 없었습니다

.

try 
     { 
      SQLiteTransaction liteTransaction = Connection.BeginTransaction(); 
      SQLiteCommand command = new SQLiteCommand(insert.BuildInsert(tableName, keyValuePairs), Connection); 
      command.Transaction = liteTransaction; 
      command.ExecuteNonQuery(); 
      liteTransaction.Commit(); 
     } 
     catch (SQLiteException e) 
     { 
      //error 
      connection.Close(); 
     } 

BuildInsert 메서드는 INSERT 인 문자열을 구성하기 만합니다. 쿼리 분석기에서 삽입이 제대로 작동합니다.

public string BuildInsert(string tableName, IDictionary<string, string> testDataDic) 
    { 
     stringBuilder = new StringBuilder(String.Format("INSERT INTO {0} ", tableName)); 
     AddColumns(stringBuilder,testDataDic.Keys); 
     AddValues(stringBuilder, testDataDic.Values); 

     return stringBuilder.ToString(); 

    } 

다음은 INSERT 문의 예입니다. 코드 외부에서는 문제가 없지만 오류는 발생하지 않습니다.

INSERT INTO TestData (walking,running,image,yoga,exercise,meditation,hobby,somethingelse,howoften,numtechniques,userreturn,chosentechnique,chosentechnique)VALUES ("true","I will try to use deep breathing.","false","true","false","false","true","true","When I'm stressed","1","true","deepbreathing","deepbreathing"); COMMIT; 
+0

시도하는 방법을 보려면 코드를 게시 – Pentium10

+0

BuildInsert 메서드에 대한 코드를보고 싶습니다. 어쩌면 무언가가 그다지 옳지 않을 수도 있습니다. – thorkia

+0

자, 이제 AddColumns가 모든 열을() 안에 넣었습니까? 사용자 (사용자 이름, 비밀번호)에 삽입하는 것과 같은가? - 여분의 쉼표가 없는지 확인합니까? AddValues와 동일하게 쿼리를 올바르게 빌드합니까? BuildInsert의 샘플 반환 값은 무엇입니까? – thorkia

답변

0

DOH! 따라서 로컬 데이터베이스 빌드 작업은 '항상 copu'로 설정되었습니다. 동일한 파일의 여러 버전이 있습니다.

죄송합니다. 그것은 절름발이입니다.

관련 문제