我目前正在为可再发行应用程序使用 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 驱动程序。它工作得很好,我还没有遇到任何重大问题。我遇到的唯一小问题是它不允许在一次调用中使用多个语句,因此您只需将其分开即可。此外,该驱动程序允许使用 DSN-less 方法,这使一切变得更加容易。
所以,imo,ODBC 驱动程序确实是最好的解决方案。
或者试试 Datenhaus的 DHSqlite http://www.thecommon.net/2.html ..
“...作为 ADO 的快速替代品开发,封装了超快的 SQLite 引擎...”
“......只需两个 Dll,您就可以完全替代整个 ADO/JET 环境 - 不再有依赖关系......”
..它是免费的(但不是开源的)。
这是带有代码示例的链接:
只是关于这个主题/问题的仅供参考......
发布的 FreeVB 代码链接使用仅支持 SQLite 2.x(功能有限)的 AGS_SQLite.dll
提供的 DHSqlite 链接也支持 SQLite 3.x,对于使用 VB6 (Classic) 进行 SQLite 开发的任何人来说都是一个更好的建议……在http://www.thecommon.net/3 上有此 SQLite 引擎的代码示例。 html
希望有帮助!
vbRichClient-Framework(目前为第 5 版)是免费提供的 3 个 Dll 集: vbRichClient5.dll vb_cairo_sqlite.dll DirectCOM.dll vbRichClient5.dll 是用 VB6 编写的 - 并且计划在 LGPL 下进行以后的开源。
它的主要目的是,尽可能多地与 MS-COM 依赖项分离,并牢记目标,以便稍后在随附的(与 VB6 兼容的)编译器启动时更容易实现自托管状态。如果更容易实现平台可移植性(对于编译器和新的基于类的运行时)是目标,那么我们需要开始使用这种已经处于过渡和规划阶段的解耦框架。
So, the lib offers a modern GUI-Framework which works Vector-based, using the cairo-library under the hood (no GDI/GDI+ or DirectX here ... and also nothing of the MS-CommonControls.dll is touched).
The other larger part, which is often needed and used within "typical VB-Applications" is easy DB-Access (usually done over an accompanying Desktop-DB-File in *.mdb-Format). So what the framework also offers, is an easy to use (and nearly ADO-compatible) replacement for the MS-JET-Engine. This is, what makes up the other larger part of the accompanying satellite-binary: vb_cairo_sqlite.dll ... the SQLite-engine.
本页中间的COM Wrappers / Visual Basic DLLs部分列出了一些可用于 VB6 的解决方案。
是的,我仍然坚持使用 VB6 进行开发 :(
似乎可以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)
(我不知道该示例是否真的准备好用于生产代码)。