예제 #1
0
        public void InsertRecords()
        {
            var db = OpenDB(databaseName);

            db.ExecuteNonQuery("BEGIN");
            var stmt = new SQLiteVdbe(db, INSERT_Command);
            long key = 1999;
            for(var i = 0; i < 1000; i++)
            {
                key = (3141592621L * key + 2718281829L) % 1000000007L;
                stmt.Reset();
                stmt.BindLong(1, key);
                stmt.BindText(2, key.ToString());
                stmt.ExecuteStep();
            }
            stmt.Close();
            db.ExecuteNonQuery("END");

            db.CloseDatabase();
        }
        /// <summary>
        /// Executes query that does return something (e.g. SELECT).
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public DataTable ExecuteQuery(String query)
        {
            // compiled query
            SQLiteVdbe statement = new SQLiteVdbe(this, query);

            // table for result of query
            DataTable table = new DataTable();

            // create new instance of DataTable with name "resultTable"
            table = new DataTable("resultTable");

            // reads rows
            do
            {
            } while (ReadNextRow(statement.VirtualMachine(), table) == Sqlite3.SQLITE_ROW);
            // finalize executing this query
            statement.Close();

            // returns table
            return(table);
        }
예제 #3
0
        /// <summary>
        /// Executes query that does return something (e.g. SELECT).
        /// </summary>
        /// <param name="query"></param>
        /// <returns></returns>
        public DataTable ExecuteQuery(String query)
        {
            // compiled query
            SQLiteVdbe statement = new SQLiteVdbe(this, query);

            // table for result of query
            DataTable table = new DataTable();

            // create new instance of DataTable with name "resultTable"
            table = new DataTable("resultTable");

            // reads rows
            do
            {
            } while ( ReadNextRow( statement.VirtualMachine(), table ) == Sqlite3.SQLITE_ROW );
            // finalize executing this query
            statement.Close();

            // returns table
            return table;
        }
예제 #4
0
    private static void TestCsharpSqlite()
    {
        SQLiteDatabase db;
        SQLiteVdbe stmt;
        SQLiteVdbe c1, c2;

        bool found;
        int i;

        string databaseName = "Benchmark_cs-SQLite.sqlite";
        if(File.Exists(databaseName))
            File.Delete(databaseName);

        db = new SQLiteDatabase(databaseName);
        for(i = 0; i < PRAGMA_Commands.Length; i++)
        {
            db.ExecuteNonQuery(PRAGMA_Commands[i]);
        }

        db.ExecuteNonQuery("BEGIN EXCLUSIVE");
        for(i = 0; i < CREATE_Commands.Length; i++)
        {
            db.ExecuteNonQuery(CREATE_Commands[i]);
        }
        stmt = new SQLiteVdbe(db, INSERT_Command);
        long start = DateTime.Now.Ticks;
        long key = 1999;
        for(i = 0; i < nRecords; i++)
        {
            key = (3141592621L * key + 2718281829L) % 1000000007L;
            stmt.Reset();
            stmt.BindLong(1, key);
            stmt.BindText(2, key.ToString());
            stmt.ExecuteStep();
        }
        stmt.Close();
        db.ExecuteNonQuery("END");
        timer[1, 0] = DateTime.Now.Ticks - start;

        db.ExecuteNonQuery("BEGIN EXCLUSIVE");
        start = DateTime.Now.Ticks;
        c1 = new SQLiteVdbe(db, SELECT_Bind_i);
        c2 = new SQLiteVdbe(db, SELECT_Bind_s);
        key = 1999;
        for(i = 0; i < nRecords; i++)
        {
            key = (3141592621L * key + 2718281829L) % 1000000007L;
            c1.Reset();
            c1.BindLong(1, key);
            c1.ExecuteStep();

            c2.Reset();
            c2.BindText(1, key.ToString());
            c2.ExecuteStep();

            long id = (long)c1.Result_Long(0);
            Debug.Assert(id == (long)c2.Result_Long(0));

        }
        c1.Close();
        c2.Close();
        db.ExecuteNonQuery("END");
        timer[1, 1] = DateTime.Now.Ticks - start;

        db.ExecuteNonQuery("BEGIN EXCLUSIVE");
        start = DateTime.Now.Ticks;
        key = Int64.MinValue;
        i = 0;
        c1 = new SQLiteVdbe(db, SELECT_Command_i);
        while(c1.ExecuteStep() != Sqlite3.SQLITE_DONE)
        {
            long intKey = (long)c1.Result_Long(0);
            Debug.Assert(intKey >= key);
            key = intKey;
            i += 1;
        }
        c1.Close();
        Debug.Assert(i == nRecords);

        String strKey = "";
        i = 0;
        c2 = new SQLiteVdbe(db, SELECT_Command_s);
        while(c2.ExecuteStep() != Sqlite3.SQLITE_DONE)
        {
            string recStrKey = (string)c2.Result_Text(1);
            Debug.Assert(recStrKey.CompareTo(strKey) >= 0);
            strKey = recStrKey;
            i += 1;
        }
        c2.Close();
        Debug.Assert(i == nRecords);
        timer[1, 2] = DateTime.Now.Ticks - start;
        db.ExecuteNonQuery("END");

        db.ExecuteNonQuery("BEGIN EXCLUSIVE");
        start = DateTime.Now.Ticks;
        key = 1999;
        stmt = new SQLiteVdbe(db, DELETE_Bind);
        for(i = 0; i < nRecords; i++)
        {
            key = (3141592621L * key + 2718281829L) % 1000000007L;
            stmt.Reset();
            stmt.BindLong(1, key);
            stmt.ExecuteStep();
        }
        stmt.Close();
        db.ExecuteNonQuery("END");
        timer[1, 3] = DateTime.Now.Ticks - start;
        db.CloseDatabase();
        #if NET_35
        Sqlite3.Shutdown();
        #else
        Sqlite3.sqlite3_shutdown();
        #endif
    }