ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何去找115资源啊

2020-05-25 18:04:17  阅读:245  来源: 互联网

标签:record admin 数据库 视图 115 如何 type id 资源


第二个数据库升级方案是基于数据库表的结构都是存储在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 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。

标签:record,admin,数据库,视图,115,如何,type,id,资源
来源: https://www.cnblogs.com/iheidh/p/12958256.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有