rong_sqlite
SQLite APIs
SQLite
Embedded SQLite database with synchronous API. Uses WAL mode by default.
Quick Start
const db = new Rong.SQLite("mydb.sqlite");
db.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)");
db.run("INSERT INTO users (name, age) VALUES (?, ?)", ["Alice", 30]);
const rows = db.query("SELECT * FROM users WHERE age > ?", [18]);
console.log(rows); // [{ id: 1, name: "Alice", age: 30 }]
db.close();
Opening a Database
const db = new Rong.SQLite("mydb.sqlite"); // file-based
const db = new Rong.SQLite(":memory:"); // in-memory
const db = new Rong.SQLite(); // in-memory (default)
Executing SQL
db.exec(sql)
Execute one or more statements. No parameters, no return value. Use for DDL / schema setup.
db.exec(`
CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);
CREATE TABLE logs (id INTEGER PRIMARY KEY, msg TEXT);
`);
db.run(sql, params?)
Execute a single statement. Returns { changes, lastInsertRowid }.
const result = db.run("INSERT INTO users (name, age) VALUES (?, ?)", ["Alice", 30]);
result.changes; // 1
result.lastInsertRowid; // 1
db.query(sql, params?)
Execute a query and return all rows as array of objects.
const rows = db.query("SELECT * FROM users WHERE age > ?", [18]);
// [{ id: 1, name: "Alice", age: 30 }, ...]
Prepared Statements
For repeated queries, prepare once and execute many times.
const stmt = db.prepare("SELECT * FROM users WHERE age > ?");
stmt.all(params?)
Return all matching rows as objects.
const rows = stmt.all([18]);
// [{ id: 1, name: "Alice", age: 30 }, ...]
stmt.get(params?)
Return the first matching row, or null.
const user = stmt.get([30]);
// { id: 1, name: "Alice", age: 30 } or null
stmt.values(params?)
Return rows as arrays of values (no column names).
const rows = stmt.values([18]);
// [[1, "Alice", 30], [2, "Bob", 25]]
stmt.run(params?)
Execute without returning rows. Returns { changes, lastInsertRowid }.
const insert = db.prepare("INSERT INTO users (name, age) VALUES (?, ?)");
insert.run(["Bob", 25]);
insert.run(["Charlie", 35]);
stmt.finalize()
Mark the statement as done. Further calls will throw.
stmt.finalize();
Transactions
db.transaction(() => {
db.run("INSERT INTO users (name, age) VALUES (?, ?)", ["Alice", 30]);
db.run("INSERT INTO logs (msg) VALUES (?)", ["user created"]);
});
If the callback throws, the transaction is rolled back. Otherwise it commits.
Properties
db.filename; // database file path
db.inTransaction; // true if inside a transaction
Parameter Types
| JavaScript | SQLite |
|---|---|
null / undefined | NULL |
boolean | INTEGER (0 or 1) |
number (integer) | INTEGER |
number (float) | REAL |
string | TEXT |
ArrayBuffer / Uint8Array | BLOB |
Result Type Mapping
| SQLite | JavaScript |
|---|---|
| NULL | null |
| INTEGER | number |
| REAL | number |
| TEXT | string |
| BLOB | ArrayBuffer |