如何在C ++中模拟ADO for SQLite的编辑/更新机制?

时间:2009-05-07 22:32:36

标签: c++ sqlite ado

我有一个使用ADO与Oracle数据库通信的C ++应用程序。我正在更新应用程序以支持脱机文档。我决定为本地实施SQLite。

我已经在ADO类中实现了一个包装器,它将调用适当的代码。但是,ADO添加/编辑/删除行的方式对于SQLite来说有点难以实现。

对于ADO,我会写一些类似的东西:

CADODatabase db;
CADORecordset rs( &db );
db.Open( "connection string" );
rs.Open( "select * from table1 where table1key=123" );
if (!rs.IsEOF())
{
    int value;
    rs.GetFieldValue( "field", value );
    if (value == 456)
    {
        rs.Edit();
        rs.SetFieldValue( "field", 456 );
        rs.Update();
    }
}
rs.Close();
db.Close();

对于这个简单的例子,我意识到我可能刚刚发布了更新,但真正的代码要复杂得多。

如何在Edit()Update()之间接听电话以实际更新数据?我的第一个想法是让Edit()构造一个单独的查询,Update()实际运行它,但我不确定哪些字段将被更改,也不确定表中的哪些键将更新查询限制为

1 个答案:

答案 0 :(得分:0)

“但我不确定哪些字段会被更改,也不确定表格中的哪些键限制更新查询。”

如何只选择ROWID与其他字段,然后根据它建立更新?