2009-05-07 2 views
3

ADOを使用してOracleデータベースと通信するC++アプリケーションがあります。オフライン文書をサポートするようにアプリケーションを更新しています。私はローカル側でSQLiteを実装することに決めました。C++でADOの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()が実際にそれを実行することですが、どのフィールドが変更されるのか、テーブルから更新クエリを制限するキーがわからないのです。

+0

多分私は何かを紛失しています(私はADO.NETは知っていますが、実際はADOではありません)が、なぜあなた自身のラッパーを書く必要がありますか? SQLite ODBCドライバ(http://www.ch-werner.de/sqliteodbc/)とADO-ODBCブリッジ(http://msdn.microsoft.com/en-us/library/aa227219 VS.60).aspx)? –

+0

何もインストールせずにODBCドライバを使用できますか?私はインストールすることなくUSBドライブを走らせることを望んでいる。 –

+0

C++のラッパーを調査しましたか? http://www.sqlite.org/cvstrac/wiki?p=SqliteWrappers いくつかのADOの目標を書き留めます。 –

答えて

0

"フィールドが変更されたり、テーブルから更新クエリを制限するキーがわからない。"

残りのフィールドでROWIDを選択し、それに基づいて更新を作成するのはどうですか?

+0

おっと、パーティーに少し遅れました:) –

関連する問題