Skip to content

sqlite

SQLite database operations via libsqlite3. The db handle is an opaque pointer returned by open().

sqlite.open(path)

Open a database file. Use ":memory:" for an in-memory database.

typescript
const db = sqlite.open("myapp.db");
const memdb = sqlite.open(":memory:");

sqlite.exec(db, sql)

Execute DDL or DML statements (CREATE, INSERT, UPDATE, DELETE).

typescript
sqlite.exec(db, "CREATE TABLE users (id INTEGER, name TEXT)");
sqlite.exec(db, "INSERT INTO users VALUES (1, 'Alice')");

sqlite.get(db, sql)

Execute a query and return the first row as a string. Multi-column results are pipe-separated.

typescript
const name = sqlite.get(db, "SELECT name FROM users WHERE id = 1");
// "Alice"

const row = sqlite.get(db, "SELECT id, name FROM users WHERE id = 1");
// "1|Alice"

sqlite.all(db, sql)

Execute a query and return all rows as a string array. Multi-column results are pipe-separated.

typescript
const names = sqlite.all(db, "SELECT name FROM users ORDER BY id");
// ["Alice", "Bob"]

const rows = sqlite.all(db, "SELECT id, name FROM users ORDER BY id");
// ["1|Alice", "2|Bob"]
const parts = rows[0].split('|');
// parts[0] = "1", parts[1] = "Alice"

sqlite.close(db)

Close the database connection.

typescript
sqlite.close(db);

Example

typescript
const db = sqlite.open(":memory:");
sqlite.exec(db, "CREATE TABLE users (id INTEGER, name TEXT)");
sqlite.exec(db, "INSERT INTO users VALUES (1, 'Alice')");
sqlite.exec(db, "INSERT INTO users VALUES (2, 'Bob')");

const name = sqlite.get(db, "SELECT name FROM users WHERE id = 1");
console.log(name);    // "Alice"

const names = sqlite.all(db, "SELECT name FROM users ORDER BY id");
console.log(names.length);    // 2

sqlite.close(db);

TIP

Multi-column queries return pipe-separated values. Use .split('|') to access individual columns.

Native Implementation

APIMaps to
sqlite.open()sqlite3_open()
sqlite.exec()sqlite3_exec()
sqlite.get()sqlite3_prepare_v2() + sqlite3_step()
sqlite.all()sqlite3_prepare_v2() + sqlite3_step() loop
sqlite.close()sqlite3_close()