В настоящее время я использую mdb-файл MSAccess для распространяемого приложения.
Некоторое время назад я узнал о SQLite в качестве альтернативы моему решению, но двоичные файлы, которые они предоставляют, не дают возможности использовать их в качестве объекта в VB6. (Или, по крайней мере, я не мог понять как).
У кого-нибудь есть ссылка или можно немного написать о подключении к базе данных SQLite из VB6 и его отличиях от использования ADO?

Вот ссылка с примерами кода:
Или попробуйте DHSqlite http://www.thecommon.net/2.html от Datenhaus ..
"... разработан как быстрая альтернатива в ADO, инкапсулируя сверхбыстрый SQLite-движок ... "
«... Имея всего две библиотеки DLL, вы получаете полную замену всей среды ADO / JET - больше никаких проблем с зависимостями ...»
..это бесплатно (но не с открытым исходным кодом).
Некоторое время я работал над приложением VB6 с SQLite и попробовал несколько способов подключения.
Итак, позвольте мне подвести итог и дать, на мой взгляд, лучший ответ.
Методы, упомянутые Беном Хоффштейном, gobansaor и Дэвидом В. Фентоном, хороши, но они полагаются на проприетарные интерфейсы для sqlite.
Поставщик OLEDB от CherryCity хорош, потому что он использует стандартный интерфейс, но у них есть система лицензионных отчислений за установку, что делает его действительно очень дорогим. И на их веб-сайте заранее не указано, что за продукт взимаются авторские гонорары. Вы узнаете об этом только тогда, когда действительно купили продукт для разработки и хотите его распространять.
Наконец, есть абсолютно бесплатный, как в пиве, так и в речи, ODBC-драйвер SQLite по адресу http://www.ch-werner.de/sqliteodbc/. Он работает очень хорошо, и я пока не сталкивался с какими-либо серьезными проблемами. Единственная незначительная проблема, с которой я столкнулся, заключается в том, что он не позволяет использовать несколько операторов в одном вызове, поэтому вам просто нужно разделить его. Кроме того, драйвер позволяет использовать подход без DSN, что значительно упрощает работу.
Итак, imo, драйвер ODBC - действительно лучшее решение.
Просто к вашему сведению по этой теме / вопросу ...
Опубликованная ссылка на код FreeVB использует AGS_SQLite.dll, который поддерживает только SQLite 2.x (ограниченная функциональность)
Приведенная ссылка DHSqlite также поддерживает SQLite 3.x и является лучшей рекомендацией для всех, кто занимается разработкой SQLite с помощью VB6 (Classic) ... Примеры кода для этого механизма SQLite приведены в http://www.thecommon.net/3.html
Надеюсь, это поможет!
Раздел COM-оболочки / библиотеки DLL Visual Basic в середине эта страница перечисляет некоторые решения, которые можно использовать с VB6.
И да, я все еще придерживаюсь VB6 :(
Представляется возможным получить прямой доступ к функциям SQLite в sqlite.dll с использованием синтаксиса VB Declare Sub или Declare Function.
Пример, который делает это, показан здесь: 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)
(Я не знаю, действительно ли этот пример готов для производственного кода).
VbRichClient-Framework (в настоящее время версия 5) - это бесплатный набор из 3 библиотек DLL: vbRichClient5.dll vb_cairo_sqlite.dll DirectCOM.dll VbRichClient5.dll написан на VB6, и планируется более поздняя версия Open-Sourcing под LGPL.
Его основная цель - отделить как можно больше MS-COM-зависимостей с целью: легче достичь состояния самостоятельного хостинга позже, когда будет запущен сопровождающий (VB6-совместимый) компилятор. И если целью является более легкое достижение платформенной переносимости (для компилятора и новой среды выполнения на основе классов), тогда нам нужно начать работу с такой структурой разделения уже на переходной фазе и фазе планирования.
Итак, библиотека предлагает современный GUI-Framework, который работает на векторной основе, используя cairo-библиотеку под капот (здесь нет GDI / GDI + или DirectX ... а также ничего из MS-CommonControls.dll не трогается).
Другая большая часть, которая часто требуется и используется в «типичных VB-приложениях», - это простой доступ к DB. (обычно выполняется с помощью прилагаемого Desktop-DB-File в формате * .mdb). Итак, что также предлагает фреймворк, является простой в использовании (и почти совместимой с ADO) заменой MS-JET-Engine. Это то, что делает вверху другую большую часть сопутствующего двоичного файла-спутника: vb_cairo_sqlite.dll ... SQLite-engine.