Electron那些事10:本地数据库sqlite

Electron那些事10:本地数据库sqlite【前言】上一节讲了本地日志,本地数据(文件)的部分,详见:Electron那些事09:本地数据_uikoo9的博客-CSDN博客虽然本地日志可以记录日志信息,本地数据可以记录简单的配置文件,但是像一些复杂的业务,需要维护一个本地数据库进行查询,本节讲一下本地数据库sqlite【sqlite】sqlite是有名的本地数据库,在很多系统中都有应用,SQLiteHomePage当然也有nodejs的版本,一般配套和electron使用,sqlite3-np…

大家好,又见面了,我是你们的朋友全栈君。

Electron那些事10:本地数据库sqlite

【前言】

上一节讲了本地日志,本地数据(文件)的部分,

详见:Electron那些事09:本地数据_uikoo9的博客-CSDN博客 

虽然本地日志可以记录日志信息,

本地数据可以记录简单的配置文件,

但是像一些复杂的业务,需要维护一个本地数据库进行查询,本节讲一下本地数据库sqlite

【sqlite】

sqlite是有名的本地数据库,在很多系统中都有应用,SQLite Home Page

Electron那些事10:本地数据库sqlite

当然也有nodejs的版本,一般配套和electron使用,sqlite3 – npm

默认的版本是nodejs版本,electron内可以直接使用,

还有node-webkit版本,这个版本是给node-webkit类环境使用,例如nw框架使用

Electron那些事10:本地数据库sqlite

另外还有sqlcipher版本,就是加密的本地数据库版本

Electron那些事10:本地数据库sqlite

【安装和使用】

安装比较简单

npm i sqlite3

先看官网一个例子

var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');

db.serialize(function() {
  db.run("CREATE TABLE lorem (info TEXT)");

  var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
  for (var i = 0; i < 10; i++) {
      stmt.run("Ipsum " + i);
  }
  stmt.finalize();

  db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
      console.log(row.id + ": " + row.info);
  });
});

db.close();

 也比较简单,创建db,创建table,插入数据,然后查询,效果如下

Electron那些事10:本地数据库sqlite

【创建数据库】 

创建数据库的文档:https://github.com/mapbox/node-sqlite3/wiki/API#new-sqlite3databasefilename-mode-callback

Electron那些事10:本地数据库sqlite

filename,

当传入:memory:时,会将数据库保存在内存中,不会持久化

当传入具体的文件名时,会在对应的位置创建一个文件

例如直接传入test.db时,会在根目录下创建一个test.db文件

Electron那些事10:本地数据库sqlite

当传入具体的文件路径时,会在对应的路径下创建文件,

这样在electron应用下,就可以结合上一节的内容,将db文件创建在应用目录下了

Electron那些事10:本地数据库sqlite

【创建和更新表格】

创建数据库表也比较简单,使用sql创建即可,

db.run("CREATE TABLE lorem (info TEXT)");

 sqlite支持哪些数据类型呢,可以看这里,Datatypes In SQLite

Electron那些事10:本地数据库sqlite

可以需要注意,可以传入callback函数,如果创建失败,会报错,如果成功会返回null

    db.run(sql, (e) => {
        if(e) throw e;
    });

创建表格详细的文档可以看这里,CREATE TABLE 

Electron那些事10:本地数据库sqlite

更新表格可以看这里,ALTER TABLE

Electron那些事10:本地数据库sqlite

创建view,可以看这里,CREATE VIEW

Electron那些事10:本地数据库sqlite

删除表格和view,

DROP TABLE

https://www.sqlite.org/lang_dropview.html

【插入数据】

插入数据需要先使用db.prepare准备好statement语句,然后run,然后finalize写入,如下

Electron那些事10:本地数据库sqlite

详细可以看这里,INSERT 

Electron那些事10:本地数据库sqlite

【查询数据】 

查询数据,可以看这里,SELECT 

Electron那些事10:本地数据库sqlite

这里有三种返回数据的方法,all,each,get

all,返回所有数据

each,多次回调,返回每一个数据

get,返回第一个数据

// 多次回调
db.each('SELECT * FROM t_project', function(err, row) {
    console.log(row);
});

// 返回第一行
db.get('SELECT * FROM t_project', function(err, row) {
    console.log(row);
});

// 返回所有数据
db.all('SELECT * FROM t_project', function(err, row) {
    console.log(row);
});

【删除数据】

删除数据可以看这里,DELETE

Electron那些事10:本地数据库sqlite

【m1下问题】

sqlite3这个npm包,单独使用没有问题,

但是在mac m1+electron环境下使用会报错,如下

Electron那些事10:本地数据库sqlite

报错提示找不到arm64下的文件,但是sqlite3下有x64版本的,

修复的版本,npm i的时候添加指定系统

npm install --target_arch=arm64

 这样即可安装arm64版本的sqlite3

【qiao-sqlite】

将常见的sqlite操作封装了一个npm,qiao-sqlite – npm

create db

Electron那些事10:本地数据库sqlite

create table

Electron那些事10:本地数据库sqlite

drop table

Electron那些事10:本地数据库sqlite 

 

show tables

Electron那些事10:本地数据库sqlite

以及常见的数据操作

insert data

modify data

get data

select data

del data

等操作 

【总结】

1.使用sqlite作为本地数据库

2.创建数据库

3.创建和修改表

4.插入数据,修改数据,查询数据,删除数据等

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143944.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • latex中bibtex生成参考文献_英文参考文献自动生成方法

    latex中bibtex生成参考文献_英文参考文献自动生成方法创建BibTeX文件  BibTex是一种专门用于协调LaTeX的参考文献处理的文件格式,其后缀为.bib。BibTex可以用JabRef,bibtex等软件生成,也可以直接用记事本创建,操作起来非常灵活,这里主要介绍用JabRef来生成BibTex文件。JabRef是一套开放源代码、处理BibTeX格式的文献管理软件,提供了简易操作的界面来编辑BibTeX档案,功能包含从网络上的科学数据库汇…

    2022年9月3日
  • setContentView的时候,到底发生了什么

    setContentView的时候,到底发生了什么关于setContentView方法,想必大家对这个方法既熟悉又陌生,熟悉的原因是因为基本上我们每创建一个activity,都会调用这个方法,比如:“`@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}“`而且这种写法已经是创建activity的模版了

    2022年6月26日
  • java string简单例子_javaStringBuilder类的详解及简单实例

    java string简单例子_javaStringBuilder类的详解及简单实例javaStringBuilder类的详解及简单实例实现代码:publicclassStringBuilderTest{/***@paramargs*/publicstaticvoidmain(String[]args){StringBuildersb=newStringBuilder();//追加字符串sb.append(“java”);//sb=”java”…

    2022年7月17日
  • 手机gif录屏软件_手机录制gif软件

    手机gif录屏软件_手机录制gif软件gif录屏手机app是一款免费专业的视频剪辑制作软件,下载gif录屏apk支持GIF动画录屏以及MP4视频录屏,通过手机录屏GIF制作软件,一键轻松进行视频编辑、视频压缩和视频拼接。软件介绍gif录屏app是一款完全免费的专业高清流畅的录屏软件,支持GIF动画录屏以及MP4视频录屏。功能强大,操作简单,用户可以轻松录屏,录屏生成GIF回味用户自动生成GIF文件;将屏幕录制到动画文件.GIF,一边录…

    2022年9月20日
  • sql日期时间转换成字符串_把时间格式转化为字符串格式

    sql日期时间转换成字符串_把时间格式转化为字符串格式一、sqlserver日期时间函数SqlServer中的日期与时间函数1.当前系统日期、时间selectgetdate()2.dateadd在向指定日期加上一段时间的基础上,返回新的datetime值例如:向日期加上2天selectdateadd(day,2,’2004-10-15′)–返回:2004-10-1700:00:00.0003.datediff返回跨两个指定日期的日期和时间边界数。sel…

    2022年10月8日
  • 如何将类序列化并直接存储入数据库

    如何将类序列化并直接存储入数据库

    2022年2月23日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号