Joe Mistachkin wrote:
>
>Thanks for the query.  It's difficult to track down performance issues with 
>System.Data.SQLite without seeing the C# (or VB.NET) example code as there are 
>a variety of ways to query and process data using it.
>
>Is there any chance we could see the code that is using System.Data.SQLite?

Yes, sure. Here they are, the first one is C++, the second one VB.net .Net 
Framework 4 

With regards,

Peter

>>>>>>>>> C++ example code: <<<<<<<<<<<<<<<<<<<<<

#include "stdafx.h"
#include <iostream>
#include <string>
#include <sqlite3.h>
#include <time.h>

int main()
{
        sqlite3 *db;
        sqlite3_stmt *res;
        time_t execStart, execStop;

        const char *errMSG;
        const char *tail;

        std::cout << "Running GROUP_CONCAT function test..." << std::endl;

        time(&execStart);

        int error = sqlite3_open("test.db",&db);

        if (error)
        {
                std::cout << "Could not open DB" << std::endl;
                sqlite3_close(db);

                system("Pause");
                return 1;
        }

        int cnt;

        for (cnt = 0; cnt < 50000; cnt++)
        {
                std::string query = "SELECT 
GROUP_CONCAT(Parent.fkintFolderID,':') FilePath FROM tblFolderNestedSets Node, 
tblFolderNestedSets Parent "
                                                    "WHERE Node.intLeft BETWEEN 
Parent.intLeft AND Parent.intRight AND Parent.fkintSessionID = 
Node.fkintSessionID " 
                                                    "AND Node.fkintSessionID =  
1824 AND Node.fkintFolderID  = 2913318;";
        
                error = sqlite3_prepare_v2(db,query.c_str(), query.length(), 
&res, &tail);
        
                if (error != SQLITE_OK)
                {

                        std::cout << "Could not prepare sql" << std::endl;
                        sqlite3_close(db);

                        system("Pause");
                        return 1;
                }
        }

        sqlite3_finalize(res);
        sqlite3_close(db);

        time(&execStop);

        double timeDiff = difftime(execStart, execStop);

        printf("Elapsed time is %.2lf seconds. ", timeDiff);

        system("Pause");
        return 0;

}

>>>>>>>>>>>>> System.Data.SQLite example code: <<<<<<<<<<<<<<<<<<<<<<

Module Module1

    Sub Main()

        Dim _stopwatch As New Stopwatch()

        Dim _dbConn As New System.Data.SQLite.SQLiteConnection()
        Dim _dbPath As String = "Data Source=test.db"

        _stopwatch.Start()

        Console.WriteLine("Running GROUP_CONCAT function test...")

        _dbConn.ConnectionString = _dbPath
        _dbConn.Open()

        Dim _selCmd As System.Data.SQLite.SQLiteCommand
        _selCmd = New System.Data.SQLite.SQLiteCommand(_dbConn)

        _selCmd.CommandText = "SELECT GROUP_CONCAT(Parent.fkintFolderID,':') 
FilePath FROM tblFolderNestedSets Node, tblFolderNestedSets Parent " & _
                              "WHERE Node.intLeft BETWEEN Parent.intLeft AND 
Parent.intRight AND Parent.fkintSessionID = Node.fkintSessionID " & _
                              "AND Node.fkintSessionID =  1824 AND 
Node.fkintFolderID  = 2913318;"

        Dim _cnt As Integer
        Dim _result As String

        For _cnt = 1 To 50000

            _result = _selCmd.ExecuteScalar().ToString()
        Next

        _dbConn.Close()

        _stopwatch.Stop()

        Console.WriteLine("Elapsed time is {0} seconds.", _stopwatch.Elapsed)
        Console.WriteLine("Press any key to continue...")
        Console.ReadKey()

    End Sub

End Module



_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to