三、Electron(Windows) sqlite3使用

Electron(Windows) sqlite3使用

1、sqlite安装

a、如果没有安装过编译环境,需要安装编译环境

npm install -g node-gyp
npm install -g node-pre-gyp
npm install --global --production windows-build-tools

b、使用cd命令切换到工程所在目录(eg、工程在D:\project\electron-update)

d:
cd D:\project\electron-update
npm
npm install sqlite3 --save

三、Electron(Windows) sqlite3使用_第1张图片
c、切找到sqlite3的 node_modules 目录

cd node_modules\sqlite3
node-gyp rebuild --target=7.1.4 --arch=x64 --target_platform=win32  --dist-url=https://atom.io/download/electron/ --module_name=node_sqlite3 --module_path=../lib/binding/electron-v7.1-win32-x64

–target=写当前用的electron 版本号

三、Electron(Windows) sqlite3使用_第2张图片
到此sqllite 安装完在

3、封装数据库操作类 新建文件 sql_lite_database.js并将文件放到自己工程目录中

eg、我的放到了src\renderer\database目录下

//引入sqlite3 
import sql_db from 'sqlite3'


/**
 * File: sqlite.js.
 * Author: W A P.
 * Email: [email protected].
 * Datetime: 2018/07/24.
 */
 
var fs = require('fs');
var sqlite3 = sql_db.verbose();
 
var DB = DB || {};
 
DB.SqliteDB = function(file){
    
    DB.db = new sqlite3.Database(file);
    console.log("open db file!");
    DB.exist = fs.existsSync(file);
    if(!DB.exist){
        console.log("Creating db file!");
        fs.openSync(file, 'w');
    };

   
    
    //return DB;
};
 
DB.printErrorInfo = function(err){
    console.log("Error Message:" + err.message + " ErrorNumber:" + errno);
};
 
DB.SqliteDB.prototype.createTable = function(sql){
    DB.db.serialize(function(){
        DB.db.run(sql, function(err){
            if(null != err){
                DB.printErrorInfo(err);
                return;
            }
        });
    });
};
 
/// tilesData format; [[level, column, row, content], [level, column, row, content]]
DB.SqliteDB.prototype.insertData = function(sql, objects){
    DB.db.serialize(function(){
        var stmt = DB.db.prepare(sql);
        for(var i = 0; i < objects.length; ++i){
            stmt.run(objects[i]);
        }
    
        stmt.finalize();
    });
};
 
DB.SqliteDB.prototype.queryData = function(sql, callback){
    DB.db.all(sql, function(err, rows){
        if(null != err){
            DB.printErrorInfo(err);
            return;
        }
 
        /// deal query data.
        if(callback){
            callback(rows);
        }
    });
};
 
DB.SqliteDB.prototype.executeSql = function(sql){
    DB.db.run(sql, function(err){
        if(null != err){
            DB.printErrorInfo(err);
        }
    });
};
 
DB.SqliteDB.prototype.close = function(){
    DB.db.close();
};

let dbInstance = new DB.SqliteDB("./cui_test.db");//指定生成的数据库名
dbInstance.init();


export default dbInstance;

4、sqlite引入工程

a、打开工程中src\renderer\main.js
三、Electron(Windows) sqlite3使用_第3张图片
b、测试一下能否使用
在App.vue中的script文件中加入以测试代码

 this.$dboper.createTable("create table if not exists sys_paramconfig(param_name text, param_value INTEGER,param_type INTEGER);");
    let querySql = "select * from sys_paramconfig where param_name = 'system_ini' and param_value='1' ";
    this.$dboper.queryData(querySql, function(objects){
        
        console.log(objects);
       
    });

发现工程目录中生成了一个cui_test.db文件,并且表中存在sys_paramconfig表,可以借助可视化工具查找sqllite数据库
到此sqllite成功引入到electron中

你可能感兴趣的:(Electron)