This module is part of d2sqlite3.
This module is part of d2sqlite3.
This module is part of d2sqlite3.
Sets a configuration option.
Manually initializes (or shuts down) SQLite.
Tests if an SQLite compile option is set
Manually initializes (or shuts down) SQLite.
Gets the library's version string (e.g. "3.8.7"), version number (e.g. 3_008_007) or source ID.
Tells whether SQLite was compiled with the thread-safe options.
Gets the library's version string (e.g. "3.8.7"), version number (e.g. 3_008_007) or source ID.
Gets the library's version string (e.g. "3.8.7"), version number (e.g. 3_008_007) or source ID.
1 // Note: exception handling is left aside for clarity. 2 import d2sqlite3; 3 import std.typecons : Nullable; 4 5 // Open a database in memory. 6 auto db = Database(":memory:"); 7 8 // Create a table 9 db.run("DROP TABLE IF EXISTS person; 10 CREATE TABLE person ( 11 id INTEGER PRIMARY KEY, 12 name TEXT NOT NULL, 13 score FLOAT 14 )"); 15 16 // Prepare an INSERT statement 17 Statement statement = db.prepare( 18 "INSERT INTO person (name, score) 19 VALUES (:name, :score)" 20 ); 21 22 // Bind values one by one (by parameter name or index) 23 statement.bind(":name", "John"); 24 statement.bind(2, 77.5); 25 statement.execute(); 26 statement.reset(); // Need to reset the statement after execution. 27 28 // Bind muliple values at the same time 29 statement.bindAll("John", null); 30 statement.execute(); 31 statement.reset(); 32 33 // Bind, execute and reset in one call 34 statement.inject("Clara", 88.1); 35 36 // Count the changes 37 assert(db.totalChanges == 3); 38 39 // Count the Johns in the table. 40 auto count = db.execute("SELECT count(*) FROM person WHERE name == 'John'") 41 .oneValue!long; 42 assert(count == 2); 43 44 // Read the data from the table lazily 45 ResultRange results = db.execute("SELECT * FROM person"); 46 foreach (Row row; results) 47 { 48 // Retrieve "id", which is the column at index 0, and contains an int, 49 // e.g. using the peek function (best performance). 50 auto id = row.peek!long(0); 51 52 // Retrieve "name", e.g. using opIndex(string), which returns a ColumnData. 53 auto name = row["name"].as!string; 54 55 // Retrieve "score", which is at index 2, e.g. using the peek function, 56 // using a Nullable type 57 auto score = row.peek!(Nullable!double)(2); 58 if (!score.isNull) 59 { 60 // ... 61 } 62 }
Copyright 2011-17 Nicolas Sicard.
D2SQLite3 provides a thin and convenient wrapper around the SQLite C API.
Features:
Modules: