У меня есть приложение 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()
фактически выполнил его, но я не уверен, какие поля будут изменены или какие ключи в таблице ограничены запросом на обновление.