Utilizzo di SQLITE con VB6
Domanda
Attualmente sto usando un file mdb MSAccess per un'app ridistribuibile.
Qualche tempo fa ho scoperto SQLite, in alternativa alla mia soluzione, ma i binari che forniscono non offrono la possibilità di usarli come oggetto in VB6. (O almeno non riuscivo a capire come).
Qualcuno ha un link o potrebbe scrivere qualcosa sulla connessione a un DB SQLite da VB6 e le sue differenze con l'utilizzo di ADO?
Soluzione
Ecco un link con esempi di codice:
Altri suggerimenti
Ho lavorato su un'app VB6 con SQLite per un po 'e ho provato un paio di metodi di connessione.
Quindi, vorrei riassumere e dare, qual è secondo me la risposta migliore.
I metodi citati da Ben Hoffstein, gobansaor e David W. Fenton sono buoni, ma si basano su interfacce proprietarie per sqlite.
Il provider OLEDB di CherryCity è buono perché utilizza un'interfaccia standard, ma ha un sistema di diritti d'autore per installazione, il che lo rende davvero molto costoso. E il loro sito Web non afferma in anticipo che il prodotto ha royalties. Lo scopri solo quando hai effettivamente acquistato il prodotto per lo sviluppo e vuoi distribuirlo.
Finalmente c'è il driver ODBC SQLite assolutamente gratuito, sia nella birra che nella parola, all'indirizzo http: // www.ch-werner.de/sqliteodbc/ . Funziona abbastanza bene e non ho ancora riscontrato problemi importanti. L'unico problema minore che ho riscontrato è che non consentirà più istruzioni in una chiamata, quindi devi solo separarlo. Inoltre, il driver consente l'approccio senza DSN, che rende tutto molto più semplice.
Quindi, imo, il driver ODBC è davvero la soluzione migliore.
Oppure prova DHSqlite http://www.thecommon.net/2.html da Datenhaus ..
" ... sviluppato come alternativa veloce ad ADO, incapsulando il motore SQLite superveloce ... "
" ... Con solo due Dll ottieni un sostituto completo per l'intero ambiente ADO / JET - nessun problema di dipendenza ... "
..è gratuito (ma non opensource).
Solo una FYI su questo argomento / domanda ...
Il collegamento al codice FreeVB pubblicato utilizza AGS_SQLite.dll che supporta solo SQLite 2.x (funzionalità limitata)
Il collegamento DHSqlite fornito supporta anche SQLite 3.x ed è una migliore raccomandazione per chiunque stia sviluppando SQLite con VB6 (Classic) ... Ci sono esempi di codice per questo motore SQLite in http://www.thecommon.net/3.html
Spero che ti aiuti!
La sezione wrapper COM / DLL di Visual Basic al centro di questa pagina elenca alcune soluzioni utilizzabili con VB6.
E sì, sono ancora bloccato nello sviluppo con VB6 :(
Sembra essere possibile accedere direttamente alle funzioni SQLite in sqlite.dll
utilizzando la sintassi VB Declare Sub
o Declare Function
.
Un esempio che lo fa è mostrato qui: https://github.com/RobbiNespu/VB6-Sqlite3
Estratto chiave:
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)
(Non so se questo esempio è davvero pronto per il codice di produzione).
Il vbRichClient-Framework (attualmente alla versione 5), è un set gratuito disponibile di 3 Dll: vbRichClient5.dll vb_cairo_sqlite.dll DirectCOM.dll VbRichClient5.dll è scritto in VB6 e viene pianificato un open-sourcing successivo sotto LGPL.
Il suo scopo principale è quello di separare il maggior numero possibile di dipendenze MS-COM, tenendo presente l'obiettivo, per raggiungere più facilmente uno stato di self-hosting in seguito, quando il compilatore di accompagnamento (compatibile con VB6) decollerà. E se l'obiettivo della portabilità della piattaforma (per il compilatore e il nuovo runtime basato su classi) è più semplice, allora dobbiamo iniziare a lavorare con un tale quadro di disaccoppiamento già nella fase di transizione e pianificazione.
Quindi, la lib offre un moderno GUI-Framework che funziona basato su Vector, usando la libreria cairo sotto il hood (no GDI / GDI + o DirectX qui ... e anche nulla di MS-CommonControls.dll viene toccato).
L'altra parte più grande, che è spesso necessaria e utilizzata all'interno di "tipiche applicazioni VB" è un facile accesso al DB (di solito eseguito su un File Desktop-DB di accompagnamento in * .mdb-Format). Quindi cosa offre anche il framework, è un rimontaggio facile da usare (e quasi compatibile con ADO) per il motore MS-JET. Questo è ciò che rende nell'altra parte più grande del binario satellite associato: vb_cairo_sqlite.dll ... il motore SQLite.