前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQlite三问

SQlite三问

作者头像
码上积木
发布2020-12-11 10:09:36
1.2K0
发布2020-12-11 10:09:36
举报
文章被收录于专栏:码上积木

感冒了,可太难受了,感觉像是行尸走肉。这两天应该全国都在变冷吧,大家一定要注意身体啊。少熬夜了,我感觉我就是熬夜导致免疫力下降了。

今天就说点简单的咯,说下Android端用的数据库引擎——SQLite。

  • 介绍下SQLite
  • 为什么Android端要使用这个数据库引擎。
  • 谈谈基本语法和市面上的封装库。

介绍下SQLite

  • SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
  • 它是用C语言构建,在Android系统架构中的系统运行库层的c/c++程序库部分。

为什么Android端要使用这个数据库引擎。

SQLite有如下特性,也就决定了其在移动端的地位:

  • 不需要一个单独的服务器进程或操作的系统(无服务器的)。
  • SQLite 不需要配置,这意味着不需要安装或管理。
  • 一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
  • SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
  • SQLite 是自给自足的,这意味着不需要任何外部的依赖。
  • SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
  • SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
  • SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
  • SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。

谈谈基本语法。

先说说SQLite的语法,分为创建,增,删,查,改

  • 创建

1)创建语法:

代码语言:javascript
复制
CREATE TABLE main.表名(
   id INTEGER PRIMARY KEY AUTOINCREMENT,
   name TEXT,
   account TEXT,
   pwd TEXT,
   age INT
);

AUTOINCREMENT代表自增主键。

2)在Android中的用法:

代码语言:javascript
复制
public class MySQLite extends SQLiteOpenHelper {

    public static String DB_NAME="main.db";


    public MySQLite(Context context, int version) {
        super(context, DB_NAME, null, version);
    }


    @Override
    public void onCreate(SQLiteDatabase db) {
         //数据库第一次创建时被调用
        db.execSQL("create table 表名 (_id integer primary key autoincrement)");

    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
       //数据库版本变化时调用
    }
}
  • 增。

1)基本语法

代码语言:javascript
复制
INSERT INTO USER (name,pwd) VALUES ("jimu", "123456");

2)Android中用法

代码语言:javascript
复制
    ContentValues values = new ContentValues();
    values.put("name","jimu")
    values.put("pwd","123456")
    sqlhelper.getWritableDatabase().insert(表名, null, values);

1)基本语法

代码语言:javascript
复制
//删除数据
DELETE FROM USER WHERE name = "jimu";

//删除数据库
DROP TABLE 数据库名.表名;

2)Android中用法:

代码语言:javascript
复制
//删除数据
getWritableDatabase().delete(表名, "name=?", new String[]{"jimu"});
//删除数据库
getWritableDatabase().execSQL("DROP TABLE IF EXISTS "+ TABLE_NAME);

1)基本语法

代码语言:javascript
复制
SELECT * 或者 具体的字段
FROM 表名
[ WHERE <条件> ]
[ GROUP BY 列名 ]
[ HAVING <条件> ]
[ ORDER BY 列名 <DESC> | <ASC> ]
[ LIMIT 行数 OFFSET 偏移量]

2)Android中用法

代码语言:javascript
复制
getWritableDatabase().query(TABLE_NAME_PERSON,null,"name=?",new String[]{"jimu"},null,null,null);

1)基本语法

代码语言:javascript
复制
UPDATE USER SET name = "jimu2" WHERE id = 1;

2)Android中用法:

代码语言:javascript
复制
getWritableDatabase().update(String table,ContentValues values, String whereClause, String[] whereArgs)

最后说说市面上的数据库框架

主要有以下几款:

  • OrmLite,LitePal(郭神的框架),GreenDao,Room(Jetpack组件)

网上也有很多对于各个框架的比较,这里就不细说了。我觉得都可以用,没有很明显的优缺点。如果你的项目框架是MVVM架构的话,就直接用room吧,毕竟是jetpack组件,对Livedata,paging等有比较好的支持。

参考

https://juejin.cn/post/6891411303798308872

拜拜

最后祝我早日康复,然后给大家带来更多优质的文章吧。晚安。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码上积木 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍下SQLite
  • 为什么Android端要使用这个数据库引擎。
  • 谈谈基本语法。
  • 最后说说市面上的数据库框架
  • 参考
  • 拜拜
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档