간단한 Winform 응용 프로그램을 만들 때 Sqlite v1.0.79 및 vs2010을 사용합니다.SQLite DataAdapter no update 또는 insert
고객 테이블이 있고 SQLiteDataAdapter를 사용하여 레코드를 쉽게 삽입, 업데이트 및 삭제하려고합니다. 그래서 전체 삽입, 업데이트 및 삭제 문을 입력 할 필요가 없습니다.
그래서 데이터 집합을 반환하는 정적로드 함수가있는 Customer 클래스가 있습니다.
private static SQLiteDataAdapter _Adapter;
internal static DataSet Load(long id)
{
var q = "SELECT * FROM Customer WHERE id = {0}".FormatInvariant(id);
var cmd = new SQLiteCommand();
cmd.Connection = [_Connection];
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = 10;
cmd.CommandText = commandText;
return cmd; _Adapter = new SQLiteDataAdapter();
_Adapter.SelectCommand = cmd;
var ds = new DataSet();
_Adapter.Fill(ds, "Customer");
if (id == 0)
{
ds.AddRow(ds.NewRow());
}
var b = new SQLiteCommandBuilder(_Adapter);
_Adapter.AcceptChangesDuringUpdate = true;
_Adapter.InsertCommand = b.GetInsertCommand();
_Adapter.UpdateCommand = b.GetUpdateCommand();
_Adapter.DeleteCommand = b.GetDeleteCommand();
// Commented out code for note A:
////ds.SetRowValue("lastname", "blaat44");
////_Adapter.Update(ds, "Customer");
return ds;
}
Load 메서드를 호출 한 후 DataSet은 Windows 폼의 바인딩에 사용됩니다. 그리고 약간의 변경 후에 Save 메소드가 호출되어 변경 사항을 저장해야합니다.
internal static void Save(DataSet data)
{
//// data.AcceptChanges();
_Adapter.Update(data, "Customer");
}
그러나 업데이트 후 데이터베이스가 아무 것도 업데이트하지 않습니다. 나는 무엇을 놓치고 있습니까? 난 이미 데이터를 시도했다. 업데이트 전에 수락 변경,하지만 아무것도 작동합니다.
btw. 저장 메서드의 데이터 집합에 '올바른 값'이 있지만 업데이트 또는 삽입이 작동하지 않습니다. ...
이상한 점은 Load 메서드에서 데이터 집합의 필드를 변경하면 위의 예제에서 A 참고), 데이터가 올바르게 저장됩니다.