現在、再配布可能なアプリに MSAccess mdb ファイルを使用しています。
少し前に、私のソリューションの代替として SQLite について知りましたが、それらが提供するバイナリは、VB6 でオブジェクトとして使用する可能性を提供しません。(または、少なくとも私はその方法を理解できませんでした)。
誰かがリンクを持っているか、VB6 から SQLite DB に接続すること、および ADO を使用する場合との違いについて少し書くことができますか?
私はしばらくの間、SQLite を使用して VB6 アプリに取り組んでおり、いくつかの接続方法を試しました。
ですから、要約して、私の意見では、最良の答えを示しましょう。
Ben Hoffstein、gobansaor、および David W. Fenton によって言及された方法は優れていますが、sqlite への独自のインターフェイスに依存しています。
CherryCity の OLEDB プロバイダーは、標準インターフェイスを使用しているため優れていますが、インストールごとのロイヤリティ システムがあり、非常に高価です。また、彼らのウェブサイトには、製品にロイヤルティがあることは前もって記載されていません. 実際に開発用の製品を購入し、それを配布したいときにのみわかります。
最後に、http://www.ch-werner.de/sqliteodbc/ には、ビールとスピーチの両方で完全に無料の SQLite ODBC ドライバーがあります。それはかなりうまく機能し、私はまだ大きな問題に遭遇していません. 私が遭遇した唯一の小さな問題は、1 回の呼び出しで複数のステートメントを許可しないことです。そのため、分離する必要があります。さらに、このドライバーは DSN を使用しないアプローチを可能にするため、すべてが非常に簡単になります。
したがって、ODBC ドライバーは本当に最適なソリューションです。
または、DatenhausのDHSqlitehttp://www.thecommon.net/2.htmlを試してください。
「...ADOの高速な代替手段として開発され、超高速のSQLiteエンジンをカプセル化しています...」
「...2つのDLLを使用するだけで、ADO/JET環境全体を完全に置き換えることができます。依存関係はなくなります。
..無料です(ただし、オープンソースではありません)。
コード例へのリンクは次のとおりです。
このトピック/質問に関する参考までに...
投稿された FreeVB コード リンクは、SQLite 2.x のみをサポートする AGS_SQLite.dll を使用します (機能が制限されています)。
提供されている DHSqlite リンクは SQLite 3.x もサポートしており、VB6 (Classic) を使用して SQLite 開発を行っている人にはより良い推奨事項です。この SQLite エンジンのコード例はhttp://www.thecommon.net/3 にあります。 html
それが役立つことを願っています!
sqlite.dll
VBDeclare Sub
またはDeclare Function
構文を使用して、SQLite 関数に直接アクセスできるようです。
これを行う例を次に示します: https://github.com/RobbiNespu/VB6-Sqlite3
キーの抜粋:
Public Declare Sub sqlite3_open Lib "sqlite.dll" (ByVal FileName As String, ByRef handle As Long)
Public Declare Sub sqlite3_close Lib "sqlite.dll" (ByVal DB_Handle As Long)
Public Declare Function sqlite3_last_insert_rowid Lib "sqlite.dll" (ByVal DB_Handle As Long) As Long
Public Declare Function sqlite3_changes Lib "sqlite.dll" (ByVal DB_Handle As Long) As Long
Public Declare Function sqlite_get_table Lib "sqlite.dll" (ByVal DB_Handle As Long, ByVal SQLString As String, ByRef ErrStr As String) As Variant()
Public Declare Function sqlite_libversion Lib "sqlite.dll" () As String
Public Declare Function number_of_rows_from_last_call Lib "sqlite.dll" () As Long
...
query = "SELECT * FROM users"
row = sqlite_get_table(DBz, query, minfo)
(その例が実際に製品コードの準備ができているかどうかはわかりません)。