min-sqlite3
说明
slqite3 扩展库
下载实际的addon
http://linuxmail.cn/go#node-mini-sqlite3
下载合适的版本,改名为 mini_sqlite3_addon.node, 放置到项目目录, 或者 项目目录的lib目录下.
程序打包的时候,记得打包这个文件
用法及例子
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)
);
`
let db = new sqlite3Client()
const test = async () => {
db.open({ "dbName": "./a.db" })
await db.worker(async (w) => {
w.transactionExec(sql)
w.transaction(() => {
let stmt = w.stmt()
stmt.prepare("INSERT OR IGNORE INTO base_config(key, val)values(:key, :val);")
for (let i = 100; i < 1000; i++) {
stmt.bind({ key: "key_" + i, val: "val_" + i })
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()