当前位置: 首页 > news >正文

在JavaScript / Node.js中,SQLite异步查询函数实现

以下是基于Node.js和SQLite的异步函数实现,满足参数化查询、异常安全关闭数据库连接等要求:

const sqlite3 = require('sqlite3');async function queryDatabase(dbName, sql, params) {// 创建数据库连接并等待打开const db = await new Promise((resolve, reject) => {const database = new sqlite3.Database(dbName, (err) => {if (err) return reject(err);resolve(database);});});try {// 执行参数化查询const results = await new Promise((resolve, reject) => {db.all(sql, params, (err, rows) => {if (err) return reject(err);resolve(rows);});});return results;} finally {// 始终尝试关闭数据库连接await new Promise((resolve, reject) => {db.close((err) => {if (err) {console.error('数据库关闭错误:', err.message);reject(err);} else {resolve();}});}).catch(() => { /* 已记录错误,无需处理 */ });}
}// 使用示例
/*
queryDatabase('mydb.sqlite', 'SELECT * FROM users WHERE id = ?', [1]).then(results => console.log(results)).catch(err => console.error('操作失败:', err));
*/

功能说明:

  1. 参数化查询:通过db.all()方法和参数数组实现安全查询
  2. 异步处理:使用Promise和async/await实现异步操作
  3. 连接管理
    • 使用IIFE模式确保数据库正确打开
    • finally块保证始终尝试关闭连接
    • 关闭错误会被记录但不影响主要结果
  4. 错误处理
    • 捕获所有数据库操作错误
    • 查询错误会直接传递给调用方
    • 关闭错误会记录到控制台

使用注意事项:

  1. 需要先安装依赖:npm install sqlite3
  2. 数据库文件需要存在于指定路径
  3. SQL语句需要与参数数组正确匹配
  4. 返回结果为行数组,空查询返回空数组

这个实现确保了在以下情况都能正确关闭连接:

  • 查询成功时
  • 查询失败时
  • 数据库连接建立失败时
  • 任何代码执行路径出现异常时
http://www.dtcms.com/a/423665.html

相关文章:

  • 数据结构:Map 和 Set (二)
  • 服务网站安徽省建设厅网站备案
  • 从零到一构建现代化 C# 在线编程环境:SharpPad 技术架构深度解析
  • Golang指针的基本概念
  • WordPress提速指南:Memcached+Super Static Cache+CDN缓存网站内容
  • 辽宁手机版建站系统开发平面设计学徒
  • 福州做网站制作北京楼市暴跌
  • PG 中 .psqlrc 配置文件使用案例
  • Linux开发——中断
  • 【快乐数六】2022-11-21
  • redis单线程模型
  • 松江新桥网站建设东莞做网站首选企业铭
  • 【Leetcode hot 100】46.全排列
  • C++版搜索与图论算法
  • 天津做网站排名企业网站建设的价格
  • Nginx 反向代理、负载均衡与 Keepalived 高可用
  • nginx upstream的作用
  • BeaverTails数据集:大模型安全对齐的关键资源与实战应用
  • 归并排序、计数排序以及各种排序稳定性总结
  • 【数据结构+算法】迭代深度搜索(IDS)及其时间复杂度和空间复杂度
  • OpenSpeedy下载 - 全平台网盘提速加速工具|官网入口
  • 关于在博客页面添加live2d-widget的一些心得和踩过的坑
  • 2025年,今后需要进步的方面
  • 有哪些做平面设计好素材网站自学it怎么入门
  • Android16 adb投屏工具Scrcpy介绍
  • 酵母展示技术如何重塑酶工程?从定向进化到工业催化的突破
  • 广汉做网站立白内部网站
  • 【FPGA+DSP系列】——(3)中断学习(以定时器中断为例)
  • 重庆网上注册公司网站配置 wordpress
  • ECMAScript 2025 有哪些新特性?