封装nodejs操作sqlite数据库的模块

本文介绍如何在Node.js环境中封装一个用于操作SQLite数据库的模块,包括连接、增删改查等基本功能,帮助开发者更高效地进行数据库交互。
// import node modules package
const fs = require('fs');
const path = require('path')
const sqlite3 = require("sqlite3").verbose();

//import own package
const propath = require('../dir/handle');

// database file
const file = "linkeye.db";

//define error information
const createAccountTableErr = 'errone';
const createSendTableErr = 'errtwo';

//define success information
const createAccountTableSucc = 'succone';
const createSendTableSucc = 'succtwo'

var initDataBase={};

/*
 * method:This funbction used to get the linkeye.db directory
 * params:no
 * return:linkeye.db directory
 */
function getDbFilePath(flag) {
  var dir =  propath.handlePath();
  var dbDir = path.resolve(dir, '../../../');
  var linkFileDir = dbDir + flag + file;
  return linkFileDir;
}

/*
 * method:This funbction used to check the linkeye.db file is exist or not
 * params:no
 * return:no
 */
initDataBase.checkCreateLinkeyeDb = function (){
  var db;
  var linkDirFile = getDbFilePath("/linkdata/");
  var exists = fs.existsSync(linkDirFile);
  if(!exists) {
    db = new sqlite3.Database(linkDirFile);
    console.log('create linkeye.db success');
  }else {
    db = new sqlite3.Database(linkDirFile);
    console.log('linkeye.db is already exist');
  }
  return db;
}

/*
 * method:This funbction used to create account table
 * params:tableName
 * params:db
 * return:
 */
initDataBase.createAccountTable = function(tableName, db) {
  if (!tableName || !db ){
    console.log("table name or db is null")
    return createAccountTableErr;
  }else {
    db.run("CREATE TABLE IF NOT EXISTS  "+ tableName + "  (" +
      "account_id        TEXT PRIMARY KEY NOT NULL," +
      "account_name      TEXT ," +
      "account_passwd    TEXT ," +
      "account_address   TEXT  " +
      ") ");
    console.log("create account table success");
  }
  return createAccountTableSucc;
}

/*
 * method:This funbction used to create send table
 * params:tableName
 * params:db
 * return:
 */
initDataBase.createSendTable = function(tableName, db) {
  if (!tableName || !db){
    console.log("table name or db  is null");
    return createSendTableErr;
  }else {
    db.run("CREATE TABLE IF NOT EXISTS  "+ tableName + "  (" +
      "send_id           TEXT PRIMARY KEY NOT NULL," +
      "account_id        TEXT ," +
      "account_addr_from TEXT ," +
      "account_addr_to   TEXT ," +
      "send_balance      TEXT ," +
      "service_charge    TEXT ," +
      "comment           TEXT ," +
      "send_status       TEXT  " +
      ") ");
    console.log("create send table success");
  }
  return createSendTableSucc;
}

module.exports = initDataBase;

/*
 * This Package used to execute sql operation
 */
const init = require('./init');


// error code
const execSqlErr = 'sqlerrone'

// init database handle
var sql = {};

/*
 * Method:This function is used to execute sql sentence
 * params: sql-sql sentence
 * params: db-database handle
 * return: fail to return error code
 */
sql.executeNoQuerySql = function (sql, db) {
  if (!sql) {
    console.log("sql sentence is null")
    return execSqlErr;
  }else {
    db.run(sql)
  }
}

/*
 * Method:This function is used to execute sql sentence
 * params: sql-sql sentence
 * params: db-database handle
 * return: success to return result set; fail to print error
 */
sql.executeQuerySql = function(sql, db) {
  if (!sql) {
    console.log("sql sentence is null")
  }else {
    db.all(sql, function(err, res) {
      if(!err) {
        var ret = JSON.stringify(res)
        console.log(ret)
      } else {
        console.log(err);
      }
    });
  }
}

module.exports = sql;


const init = require('./init');
const sql = require('./sqlite');

var db = init.checkCreateLinkeyeDb();
var sqlone = "INSERT OR REPLACE  INTO account(" +
  "account_id, account_name, account_passwd, account_address" +
  ") VALUES ('3','3','3','3')";
var err = sql.executeNoQuerySql(sqlone, db);

var sqltwo = "select * from account";
var ret = sql.executeQuerySql(sqltwo, db);

关注问我技术公众号,加小问,拉您入技术交流群:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_Web3_社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值