autojs使用nodejs调用sqlite数据库

简介: autojs先加载nodejs, 导入SQLiteDatabase, nodejs再去调用SQLiteDatabase

牙叔教程 简单易懂

依赖

"nodejs";

require("rhino").install();

const { device } = require("device");

const path = require("path");

const fs = require("fs");

const util = require("util");

const SQLiteDatabase = android.database.sqlite.SQLiteDatabase;

创建数据库

let dir = device.externalStorageDirectory; // /storage/emulated/0

let dbPath = path.join(dir, "bullet_comment.db"); // /storage/emulated/0/bullet_comment.db

let db = SQLiteDatabase.openOrCreateDatabase(dbPath, null);


创建表

async function createTable(db) {

 let CREATE_Table = `CREATE TABLE IF NOT EXISTS dou_yin_bullet_comment_table(

 'id' INTEGER PRIMARY KEY AUTOINCREMENT,

 'name' TEXT NOT NULL,

 'comment' TEXT,

 'level' INTEGER,

 'complete_comment' TEXT UNIQUE,

 'ts' TIMESTAMP DEFAULT CURRENT_TIMESTAMP

) `;

 db.execSQL(CREATE_Table); //创建用户表

}


增加一条数据

function insertItem(db, item) {

 let sql =

   "INSERT OR REPLACE INTO dou_yin_bullet_comment_table (name, comment, level, complete_comment) VALUES (?, ?, ?, ?)";

 db.beginTransaction();

 db.execSQL(sql, [item.name, item.comment, item.level, item.complete_comment]);

 db.setTransactionSuccessful();

 db.endTransaction();

}

增加多条数据

async function insertItems(db, items) {

 for (let i = 0; i < items.length; i++) {

   console.log("i = " + i);

   insertItem(db, items[i]);

   await sleep(1000);

 }

}

增加多条数据2

async function insertItemsByStatement(db, items) {

 let sql =

   "INSERT OR REPLACE INTO dou_yin_bullet_comment_table (name, comment, level, complete_comment) VALUES (?, ?, ?, ?)";

 db.beginTransaction();

 let statement = db.compileStatement(sql);

 for (let i = 0; i < items.length; i++) {

   let item = items[i];

   statement.bindString(1, item.name);

   statement.bindString(2, item.comment);

   statement.bindLong(3, item.level);

   statement.bindString(4, item.complete_comment);

   statement.execute();

   statement.clearBindings();

 }


 db.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交。

 db.endTransaction();

}

查询所有数据

function queryItems(db) {

 let query = "SELECT * FROM dou_yin_bullet_comment_table";

 let cursor = db.rawQuery(query, null);

 cursor.moveToFirst();

 let bulletComments = [];

 while (!cursor.isAfterLast()) {

   let bulletComment = {

     id: cursor.getInt(0),

     name: cursor.getString(1),

     comment: cursor.getString(2),

     level: cursor.getInt(3),

     complete_comment: cursor.getString(4),

     ts: cursor.getString(5),

   };

   bulletComments.push(bulletComment);

   cursor.moveToNext();

 }

 cursor.close();

 return bulletComments;

}


查询指定数据

function queryItemsByTs(db, count) {

 let sql = "SELECT * FROM dou_yin_bullet_comment_table ORDER BY ts DESC LIMIT " + count;

 db.beginTransaction();

 let cursor = db.rawQuery(sql, null);

 cursor.moveToFirst();

 let bulletComments = [];

 while (!cursor.isAfterLast()) {

   let bulletComment = {

     id: cursor.getInt(0),

     name: cursor.getString(1),

     comment: cursor.getString(2),

     level: cursor.getInt(3),

     complete_comment: cursor.getString(4),

     ts: cursor.getString(5),

   };

   bulletComments.push(bulletComment);

   cursor.moveToNext();

 }

 cursor.close();

 return bulletComments;

}


环境


设备: 小米11pro
Android版本: 12
Autojs版本: 9.3.11


名人名言


思路是最重要的, 其他的百度, bing, stackoverflow, github, 安卓文档, autojs文档, 最后才是群里问问 --- 牙叔教程


声明


部分内容来自网络 本教程仅用于学习, 禁止用于其他用途


相关文章
|
13天前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
87 15
|
1月前
|
存储 SQL 数据库
数据库知识:了解SQLite或其他移动端数据库的使用
【10月更文挑战第22天】本文介绍了SQLite在移动应用开发中的应用,包括其优势、如何在Android中集成SQLite、基本的数据库操作(增删改查)、并发访问和事务处理等。通过示例代码,帮助开发者更好地理解和使用SQLite。此外,还提到了其他移动端数据库的选择。
44 8
|
23天前
|
JSON JavaScript 关系型数据库
node.js连接GBase 8a 数据库 并进行查询代码示例
node.js连接GBase 8a 数据库 并进行查询代码示例
|
2月前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
2月前
|
Web App开发 SQL 数据库
使用 Python 解析火狐浏览器的 SQLite3 数据库
本文介绍如何使用 Python 解析火狐浏览器的 SQLite3 数据库,包括书签、历史记录和下载记录等。通过安装 Python 和 SQLite3,定位火狐数据库文件路径,编写 Python 脚本连接数据库并执行 SQL 查询,最终输出最近访问的网站历史记录。
44 4
|
2月前
|
存储 关系型数据库 数据库
轻量级数据库的利器:Python 及其内置 SQLite 简介
轻量级数据库的利器:Python 及其内置 SQLite 简介
70 3
|
2月前
|
应用服务中间件 PHP Apache
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
PbootCMS提示错误信息“未检测到您服务器环境的sqlite3数据库扩展...”
|
3月前
|
存储 API 数据库
QML使用Sqlite数据库存储ListModel数据
本文介绍了在QML中使用Sqlite数据库存储ListModel数据的方法,包括如何创建数据库、读取数据、动态添加和删除数据,以及如何在程序启动和退出时与数据库同步数据。
|
3月前
|
数据库 数据库管理
qt对sqlite数据库多线程的操作
本文总结了在Qt中进行SQLite数据库多线程操作时应注意的四个关键问题,包括数据库驱动加载、加锁、数据库的打开与关闭,以及QsqlQuery变量的使用。
218 1
|
2月前
|
存储 缓存 关系型数据库
sqlite 数据库 介绍
sqlite 数据库 介绍
50 0
下一篇
DataWorks