# node-mini-sqlite3 **Repository Path**: linuxmail/node-mini-sqlite3 ## Basic Information - **Project Name**: node-mini-sqlite3 - **Description**: node/electron 环境 sqlite3 扩展 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2025-03-04 - **Last Updated**: 2025-03-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: Nodejs, Sqlite ## README # min-sqlite3 ## 说明 slqite3 扩展库 ## 下载实际的addon http://linuxmail.cn/go#node-mini-sqlite3 下载合适的版本,改名为 mini_sqlite3_addon.node, 放置到项目目录, 或者 项目目录的lib目录下. 程序打包的时候,记得打包这个文件 ## 用法及例子 ``` javascript import { sqlite3Client } from "mini-sqlite3" let sql = ` CREATE TABLE IF NOT EXISTS base_config ( key STRING NOT NULL DEFAULT '', val TEXT NOT NULL DEFAULT '', PRIMARY KEY (key) ); ` // new 一个对象 let db = new sqlite3Client() const test = async () => { // 打开一个数据库, 返回 boolean db.open({ "dbName": "./a.db" }) // 申请一个worker await db.worker(async (w) => { // 事务模式执行一条语句或多条, 同步 // sql: string|string[],返回 boolean w.transactionExec(sql) // 事务内执行, 同步 w.transaction(() => { // 申请一个"预处理" let stmt = w.stmt() // 编译预处理, 返回 boolean stmt.prepare("INSERT OR IGNORE INTO base_config(key, val)values(:key, :val);") for (let i = 100; i < 1000; i++) { // 绑定, 返回 boolean stmt.bind({ key: "key_" + i, val: "val_" + i }) // 执行, 返回 boolean stmt.run() } }) w.transaction(() => { let stmt = w.stmt() stmt.prepare("UPDATE base_config SET val=:val WHERE key LIKE '%'||:valAAA||'%'") stmt.bind({ valAAA: 555 }) stmt.run() }) // let stmt = w.stmt() stmt.prepare("SELECT * FROM base_config LIMIT 1,2") stmt.stepByStep((row) => { console.log("AAA", row) }) // stmt.prepare("SELECT * FROM base_config WHERE key LIKE '%'||:keyPPP||'%' LIMIT 3") stmt.bind({ keyPPP: "key_99" }) stmt.stepByStep((row) => { console.log("BBB", row) }) // stmt.prepare("SELECT * FROM base_config WHERE key LIKE '%'||?||'%' LIMIT 3") stmt.bind(["key_99"]) stmt.stepByStep((row) => { console.log("CCC", row) }) // stmt.prepare("SELECT * FROM base_config WHERE key LIKE '%'||?||'%' LIMIT 3") stmt.bind(["key_99"]) // 单步执行 while (1) { let r = stmt.step() if (!r.status) { console.error("db error") break; } let row = r.row if (!row) { break } console.log("DDD", row) } // stmt.prepare("SELECT * FROM base_config WHERE key LIKE '%'||?||'%' LIMIT 3") stmt.bind(["key_99"]) let rows = stmt.runAndGetAllRows(); if (!rows.status) { console.error("db error") } else { console.log("EEE", rows.rows) } }) } test() ```