Как эмулировать механизм редактирования / обновления ADO для SQLite в C ++? - PullRequest
3 голосов
/ 08 мая 2009

У меня есть приложение C ++, которое использует ADO для связи с базой данных Oracle. Я обновляю приложение для поддержки автономных документов. Я решил реализовать 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 голосов
/ 04 ноября 2010

"но я не уверен, какие поля будут изменены или какие ключи из таблицы ограничены запросом на обновление."

Как насчет того, чтобы просто выбрать ROWID с остальными полями и затем создать обновление на основе этого?

...