Have done one simple test now and for now it looks SQLiteDB is about twice
as fast as the ODBC driver. I am a novice with SQLite, so maybe my test is
no good and in that I am interested to know.
I have tested on a large file (few millions rows and 19 fields) and I have
set an index on the field to search. This is the relevant code:


Option Explicit
Private lStartTime As Long
Public Declare Function timeGetTime Lib "winmm.dll" () As Long
Private strConn As String
Private ADOConn As ADODB.Connection
Private cn As SQLiteDb.Connection

Sub StartSW()
   lStartTime = timeGetTime()
End Sub

Sub StopSW(Optional ByRef strMessage As Variant = "")
   MsgBox "Done in " & timeGetTime() - lStartTime & " msecs", , strMessage
End Sub

Sub SearchSQLite()

   Dim sqliteRS As SQLiteDb.Recordset
   Dim strSQL As String
   Dim arr

   'On Error GoTo ERROROUT

   SetSQLiteConn

   StartSW
   
   strSQL = "SELECT PATIENT_ID, TERM_TEXT, ADDED_DATE, START_DATE FROM
[ENTRY] WHERE TERM_TEXT like '%angina%'"

   Set sqliteRS = cn.Execute(strSQL)

   If sqliteRS.EOF Then
      Exit Sub
   End If

   arr = sqliteRS.GetRows

   StopSW

   MsgBox UBound(arr, 2) + 1

   Exit Sub
ERROROUT:

   MsgBox Err.Description & vbCrLf & vbCrLf & _
          "Error number: " & Err.Number & vbCrLf & _
          "Error line: " & Erl


End Sub

Sub SetADOConn()

   If ADOConn Is Nothing Then
      Set ADOConn = New ADODB.Connection
   End If

   If ADOConn.State = 0 Then
      'strConn =
"DSN=SQLite3;Database=C:\SQLite\Terra\rc2.db;SyncPragma=Off;"
      strConn = "Provider=MSDASQL.1;" & _
                "Extended Properties=DSN=SQLite3;" & _
                "Database=C:\SQLite\Terra\rc2.db;" & _
                "StepAPI=0;" & _
                "SyncPragma=Off;" & _
                "NoTXN=0;" & _
                "Timeout=100000;" & _
                "LongNames=0;" & _
                "NoCreat=0"

      ADOConn.Open strConn
   End If

End Sub

Sub SetSQLiteConn()

   If cn Is Nothing Then
      Set cn = New SQLiteDb.Connection
   End If

   If cn.State = 0 Then
      cn.ConnectionString = "Data Source=C:\SQLite\Terra\rc2.db"
      cn.Open

      cn.Execute "PRAGMA synchronous=off;", , slExecuteNoRecords   ' Just to
speed up things
      cn.Execute "PRAGMA encoding='UTF-8';", , slExecuteNoRecords
   End If

End Sub

Sub SearchSQLiteODBC()

   Dim rs As ADODB.Recordset
   Dim strSQL As String
   Dim arr
   Dim i As Long
   Dim c As Long

   On Error GoTo ERROROUT

   SetADOConn

   StartSW

   'MsgBox ADOConn.ConnectionString

   strSQL = "SELECT PATIENT_ID, TERM_TEXT, ADDED_DATE, START_DATE FROM
[ENTRY] WHERE TERM_TEXT like '%angina%'"
   'strSQL = "SELECT PATIENT_ID, TERM_TEXT, ADDED_DATE, START_DATE FROM
ENTRY WHERE READ_CODE GLOB 'G3*'"

   Set rs = New ADODB.Recordset

   rs.Open Source:=strSQL, _
           ActiveConnection:=ADOConn, _
           CursorType:=adOpenForwardOnly, _
           LockType:=adLockReadOnly, _
           Options:=adCmdText

   If rs.EOF Then
      Set rs = Nothing
      Exit Sub
   End If

   arr = rs.GetRows

   StopSW

   MsgBox UBound(arr, 2) + 1

   Exit Sub
ERROROUT:

   MsgBox Err.Description & vbCrLf & vbCrLf & _
          "Error number: " & Err.Number & vbCrLf & _
          "Error line: " & Erl

End Sub


RBS


-----Original Message-----
From: Carlos Avogaro [mailto:[EMAIL PROTECTED] 
Sent: 13 November 2006 12:04
To: sqlite-users@sqlite.org
Subject: Re: [sqlite] What is the best way to connect to SQLite from VB/VBA?

With the odbc driver, is ease and faster

RB Smissaert <[EMAIL PROTECTED]> wrote:  Have spent 2 days
looking at all the different wrappers and the one ODBC
driver and maybe the best one is the commercial dll from Terra...
Still, I would be very interested what opinions are about the best (speed,
ease of use, so methods etc. close to ADO) way to connect.
This is from VB6/VBA. The database I am working with is Interbase 5.6 and
I will have to move data from IB to SQLite.

RBS



----------------------------------------------------------------------------
-
To unsubscribe, send email to [EMAIL PROTECTED]
----------------------------------------------------------------------------
-



 
---------------------------------
Cheap Talk? Check out Yahoo! Messenger's low PC-to-Phone call rates.



-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to