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;
시도하는 방법을 보려면 코드를 게시 – Pentium10
BuildInsert 메서드에 대한 코드를보고 싶습니다. 어쩌면 무언가가 그다지 옳지 않을 수도 있습니다. – thorkia
자, 이제 AddColumns가 모든 열을() 안에 넣었습니까? 사용자 (사용자 이름, 비밀번호)에 삽입하는 것과 같은가? - 여분의 쉼표가 없는지 확인합니까? AddValues와 동일하게 쿼리를 올바르게 빌드합니까? BuildInsert의 샘플 반환 값은 무엇입니까? – thorkia