如何去找115资源啊

第二个数据库升级方案是基于数据库表的结构都是存储在sqlite_master这个表中,通过修改sqlite_master中的数据来达到修改数据库表结构的作用。步骤描述如下:

 

开启一个事务

使用命令PRAGMA schema_version获取当前的schema version。

使用命令 PRAGMA writable_schema=ON。使得数据库表结构可以修改。

修改主表(sqlite_master)中相关的数据库表的定义表结构的sql命令。命令类似update sqlite_master set sql='创建数据库表命令' where type='table' AND name='X';。这步的操作属于比较危险的操作,如果操作不当,容易造成数据库不可读,因此要特别注意。

如果表X的重新创建会影响其原本的索引,触发器,视图,则需要使用update 命令进行相应的修改。比如说修改了列的名称,则与这个列相关的索引,触发器,视图,外键约束必须进行相应的修改。

将第二步获得到的schema version 加1,并使用命令PRAGMA schema_version=X,保存到数据库中。

使用命令 PRAGMA writable_schema=OFF。恢复数据库表结构不可修改。

使用 命令PRAGMA integrity_check确保数据库没有被破坏。

提交事物。

后续SQLite支持表结构修改,修改的方案会是以上描述的其中一个。

数据库表示例

数据库表结构

数据库表名:admin。数据库表结构

 

主键 账号 密码

id username password

创建数据表命令

CREATE TABLE "admin" ("id" INTEGER NOT NULL,"username" VARCHAR(20),"password" VARCHAR(128),PRIMARY KEY("id"));

1

创建索引

CREATE INDEX "ix_admin_username" ON "admin" (

 "user_name"

);

1

2

3

创建触发器。触发器的作用是当表Admin有数据修改的时候记录一下,修改时间,作为追溯数据库表修改的日志记录。 表admin_record结构如下

列名 含义

id admin表的主键只

datatime admin表修改的时间

// 创建admin_record

CREATE TABLE "admin_record" ("id" INTEGER NOT NULL,"datatime" VARCHAR(20),PRIMARY KEY("id"));

// 创建索引

CREATE TRIGGER admin_record_trigger AFTER INSERT 

ON admin

BEGIN

   INSERT INTO admin_record(id, datatime) VALUES (new.id, datetime('now'));

END;

// 测试 

// 在admin 表中插入一条数据,则会触发 触发器在 admin_record中也插入一条数据

INSERT INTO admin(id, username,password) VALUES (100,'name100','password100');

1

2

3

4

5

6

7

8

9

10

11

创建视图,在表admin中创建一个视图,视图中只显示表admin的部分列,比如说主键值和账号。命令如下

// 创建视图

CREATE VIEW admin_view AS

SELECT id, username

FROM admin

1

2

3

4

查询表结构

查询表admin的相关索引的命令

SELECT type,sql FROM sqlite_master WHERE tbl_name='admin' AND type='index'

1

查询结果

 

type index

index CREATE INDEX “ix_admin_username” ON “admin” (“user_name”)

查询admin的触发器

SELECT type,sql FROM sqlite_master WHERE tbl_name='admin' AND type='trigger'

1

查询结果

 

type sql

trigger CREATE TRIGGER admin_record_trigger AFTER INSERT ON admin BEGIN INSERT INTO admin_record(id, datatime) VALUES (new.id,datetime('now'));END

查询视图

注意查询视图,视图在主表sqlite_master 相当于一个表。不能直接通过指令查询到由某个表创建出来的视图。

SELECT type,sql FROM sqlite_master WHERE type='view'

1

GreenDao 统一数据库升级方案

greenDAO是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到SQLite数据库中,我们操作数据库的时候,不再需要编写复杂的 SQL语句, 在性能方面,greenDAO针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。

上一篇:手机那里找网盘电影资源啊115


下一篇:使用PerfDog测FindⅩ2这块120Hz屏幕到底多顺滑流畅