sqlite数据库

iOS 四种保存数据的方式!

柔情痞子 提交于 2019-12-15 19:09:18
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在iOS开发过程中,不管是做什么应用,都会碰到数据保存的问题。将数据保存到本地,能够让程序的运行更加流畅,不会出现让人厌恶的菊花形状,使得用户体验更好。下面介绍一下数据保存的方式: 1.NSKeyedArchiver:采用归档的形式来保存数据,该数据对象需要遵守NSCoding协议,并且该对象对应的类必须提供encodeWithCoder:和initWithCoder:方法。前一个方法告诉系统怎么对对象进行编码,而后一个方法则是告诉系统怎么对对象进行解码。例如对Possession对象归档保存。 定义 Possession: @interface Possession:NSObject<NSCoding>{//遵守NSCoding协议 NSString *name;//待归档类型 } @implementation Possession -(void)encodeWithCoder:(NSCoder *)aCoder{ [aCoder encodeObject:name forKey:@"name"]; } -(void)initWithCoder:(NSCoder *)aDecoder{ name=[[aDeCoder decodeObjectforKey:@"name"] retain]; } 归档操作:

第一章 SQLite数据库介绍

青春壹個敷衍的年華 提交于 2019-12-15 12:54:24
一、简介: SQLite是目前最流行的开源嵌入式数据库,和很多其他嵌入式存储引擎相比(NoSQL),如BerkeleyDB、MemBASE等,SQLite可以很好的支持关系型数据库所具备的一些基本特征,如标准SQL语法、事务、数据表和索引等。事实上,尽管SQLite拥有诸多关系型数据库的基本特征,然而由于应用场景的不同,它们之间并没有更多的可比性。下面我们将列举一下SQLite的主要特征: 1). 管理简单,甚至可以认为无需管理。 2). 操作方便,SQLite生成的数据库文件可以在各个平台无缝移植。 3). 可以非常方便的以多种形式嵌入到其他应用程序中,如静态库、动态库等。 4). 易于维护。 综上所述,SQLite的主要优势在于灵巧、快速和可靠性高。SQLite的设计者们为了达到这一目标,在功能上作出了很多关键性的取舍,与此同时,也失去了一些对RDBMS关键性功能的支持,如高并发、细粒度访问控制(如行级锁)、丰富的内置函数、存储过程和复杂的SQL语句等。正是因为这些功能的牺牲才换来了简单,而简单又换来了高效性和高可靠性。 二、SQLite的主要优点: 1. 一致性的文件格式: 在SQLite的官方文档中是这样解释的,我们不要将SQLite与Oracle或PostgreSQL去比较,而是应该将它看做fopen和fwrite。与我们自定义格式的数据文件相比

《SQL必知必会》学习笔记(sqlite)

夙愿已清 提交于 2019-12-14 05:12:24
第0课 准备数据 下载了书中提供的sqlite数据库内容。 sqlite学习 runoob提供的sqlite教程 打开书中的例子的方法 sqlite3 tysql.sqlite 常用命令 .help .show 配置输出样式 .schema 显示create语句 格式化输出 您可以使用下列的点命令来格式化输出 sqlite>.header on sqlite>.mode column sqlite>.timer on sqlite> 更多mode样式参考 文章 sqlite_master 表格 主表中保存数据库表的关键信息,并把它命名为 sqlite_master 。 查看sqlite_master的create语句。 sqlite> .schema sqlite_master CREATE TABLE sqlite_master ( type text, name text, tbl_name text, rootpage integer, sql text ); 查看sqlite_master中所有的table(书中例子) sqlite> select * from sqlite_master where type="table"; type name tbl_name rootpage sql ---------- ---------- ---------- --------

B-02 Django-第二部分(熟练掌握)-模型(Model)设计-数据库配置(基础)

两盒软妹~` 提交于 2019-12-13 06:18:06
Django-第二部分(熟练掌握)-模型(Model)设计-数据库配置(基础) 文章目录 Django-第二部分(熟练掌握)-模型(Model)设计-数据库配置(基础) 目标 回顾 a、模型(Model)设计流程过程说明 一、配置使用sqlite 1.1、配置方法 1.2、常见问题 1.2.1、子串匹配和区分大小写 1.2.2、“数据库被锁定”错误 二、配置使用mysql 2.1、配置方法 第一步:修改工程目录下的__init__.py 文件 第二步:修改setting.py文件 2.2、常见问题 问题一、No module named 'MySQLdb' 错误提示 问题原因 解决办法 问题二、mysqlclient 1.3.3 or newer is required 错误提示 问题原因 解决办法 问题三、decode错误 三、配置使用Oracle 3.1、配置方法 3.2、常见问题 目标 前面已经介绍了如何快速入门,现在开始熟练掌握一些知识 知道在哪了进行数据库的配置并进行基本的配置 了解配置过程中常见的问题 回顾 a、模型(Model)设计流程过程说明 第一步-配置使用数据库 第二步-定义模型类 第三步-迁移数据 第四步-访问使用数据 一、配置使用sqlite Django支持SQLite 3.8.3及更高版本。 1.1、配置方法 说明:Django默认使用 SQLite

adb shell下查看sqlite数据库

醉酒当歌 提交于 2019-12-12 01:31:29
adb shell下查看sqlite数据库 有时需要查看应用的本地数据库是否改变,一般可以使用SqliteStudio来查看(需要把xx.db文件导出来).现在记录一下如何在adb shell 下面查看 sqlite 数据库的内容. Android 把数据都存在在/data/data/下面.如果我们需要查看那个应用的数据库内容,就进入到这个应用的包名的目录.然后进入里面的 databases目录,使用ls目录查看数据库文件的名称,再使用sqlite3相关的目录操作就可以了. 具体参考下面的例子: adb shell cd data/data/com.android.providers.settings cd databases 进入目录 ls 显示文件,会发现xxx.db文件,这个例子会看到settings.db这个文件 sqlite3 settings.db 执行到这里命令行会变成sqlite> 开头的,这是表示已经打开了settings.db 这 个数据库文件,后面就可以去查询修改数据了 sqlite>.help 这个命令让我们看到许多命令 sqlite> .exit 命令退出sqlite,返回到#提示符。 sqlite>.tables 查看所有表. 实际我们会看到下面这些表 android_metadata bookmarks secure bluetooth_devices

Android数据库框架DBFlow的使用

眉间皱痕 提交于 2019-12-12 01:18:36
原文首发于微信公众号: jzman-blog ,欢迎关注交流! DBFlow 是一个基于注解处理器开发的使用方便的 ORM Android 数据库,该库简化了很多多余的代码,并且提供了好用的 API 来处理与数据库的交互,让开发者专注 App 的开发。下面将从以下几个方面来学习 DBFlow 数据库框架的使用,具体如下: DBFlow 的优势 配置 DBFlow 创建数据库 创建表 插入数据 删除数据 更新数据 查询数据 案例 DBFlow 的优势 DBFlow 借鉴了一些其他优秀数据库框架的特性,下面是 DBFlow 的优势,具体如下: Extensibility(扩展性) :对表类的继承类没有限制,可以是一个普通的 JavaBean,使用时为了方便推荐表类继承 BaseModel 类你可以扩展不同包中的非模型类,并将它们用作数据库表,此外,你可以将其他表的子类加入到 @Column 中,并且它们可以位于不同的包中。 Speed(速度) :该库基于 Java 的注解处理器生成,使用它对运行时性能几乎没有任何影响(反射仅仅用于生数据库模块的生成),可以节省生成样板代码的时间,支持模型缓存(多主键模型),在可能的情况下比原生的 SQLite 速度要快,支持懒加载、@ForeignKey、@OneToMany等使得查询更有效率。 SQLite Query Flow(SQLite查询流)

sqlite删除数据

穿精又带淫゛_ 提交于 2019-12-11 02:29:13
sqlite删除数据 某日, 在使用sqlite的时候发现查询速度极慢, 查看了一下文件大小, sqlite数据库文件已经达到了 22G! 对于一个文件数据库来说, 已经相当致命了,先不说后面如果解决文件过大的问题, 首先手动删除一些文件, 释放一些空间; 本文就释放空间的过程遇到的问题做一个记录 问题一: 删除表后, 数据库文件占用磁盘空间并没有释放 在 drop table ** 之后, 查看文件占用空间大小, 发现并没有变化 是因为sqlite的机制是, 当你删除表后, sqlite会把释放出来的空间, 放到一个空闲列表中, 用于下次你插入数据的时候用, 并不会把空间返还给操作系统 , 很流氓的做法 这时如果想强制释放空间, 需要用 vacuum; 命令 问题二:db or disk is full 当你执行完 vacuum命令后, 满心欢喜的等待释放空间, 结果等了好久, 最后报了一个这个错, 说磁盘或者数据库空间已满; 这是因为 sqlite执行 vacuum命令释放空间的机制, 是需要把数据库文件拷贝到一个临时文件中, 然后再删除;所以需要两倍于 数据库文件大小 的磁盘空间 问题三:Vacuum命令的临时文件目录, 是哪个 磁盘当然是不够用的, 那这时需要挂载一个硬盘了, 可是, 挂载到哪个目录呢? 在上一步执行 vacuum命令的时候, 观察了一下 磁盘使用情况,

Android SQLite 数据库的使用

倾然丶 夕夏残阳落幕 提交于 2019-12-10 18:34:55
如有不对的地方,望各路大神指点,小女子在此谢过,(*^__^*) 嘻嘻…… 一、创建数据库 第一个参数:数据库的名字 第二个参数:数据库权限(MODE_PRIVATE为本应用程序私有 * ,MODE_WORLD_READABLE和MODE_WORLD_WRITEABLE分别为全局可读和可写) 第三个参数:可以用来实例化一个cusor对象的工厂类 SQLiteDatabase database = context.openOrCreateDatabase("Book.db", 0, null); 1.判断数据库是否打开 database.isOpen() 2.关闭数据库 database.close(); 二 创建表(创建一个book 表) //创建book表 public void createBookTable() { StringBuilder createBook = new StringBuilder("CREATE TABLE book(id char(40) PRIMARY KEY,name char,actionType varchar(10) default 'add',") .append("createDate date default CURRENT_TIMESTAMP ,editDate date default CURRENT_TIMESTAMP,")

[PHP] Laravel 体现 MySQL、Sqlite 数据的大小写敏感

依然范特西╮ 提交于 2019-12-09 02:23:32
要想实现数据比对的大小写敏感,方式是设置数据库字段类型 或者 字段校验字符集。 MySQL 和 Sqlite 所支持的 collations 形式是不同的,你可以通过以下文档了解到。 MySQL collations : https://dev.mysql.com/doc/refman/5.7/en/charset-binary-collations.html Sqlite collations: https://www.sqlite.org/datatype3.html (7. Collating Sequences) MySQL 可以分别对 服务器、数据库、表、字段 的字符校验进行设置 。 MySQL 需要开启数据大小写敏感的时候,如果不想全局设置,那么可以对具体字段选择 collations ,简述如下:   二进制字符(BINARY,VARBINARY,BLOB)有一个 binary 的 collation。   非二进制字符(CHAR,VARCHAR,TEXT)的 collation 是字符集加 _bin 后缀,比如 utf8mb4_bin。 在 Laravel 的单元测试中,一般会使用 Sqlite 的内存数据库进行数据存储测试,简单快速。 <server name="DB_CONNECTION" value="sqlite"/> <server name="DB

SQLite学习手册(在线备份)

ぐ巨炮叔叔 提交于 2019-12-07 19:03:50
一、常用备份: 下面的方法是比较简单且常用的SQLite数据库备份方式,见如下步骤: 1). 使用SQLite API或Shell工具在源数据库文件上加共享锁。 2). 使用Shell工具(cp或copy)拷贝数据库文件到备份目录。 3). 解除数据库文件上的共享锁。 以上3个步骤可以应用于大多数场景,而且速度也比较快,然而却存在一定的刚性缺陷,如: 1). 所有打算在源数据库上执行写操作的连接都不得不被挂起,直到整个拷贝过程结束并释放文件共享锁。 2). 不能拷贝数据到in-memory数据库。 3). 在拷贝过程中,一旦备份数据库所在的主机出现任何突发故障,备份数据库可能会被破坏。 在SQLite中提供了一组用于在线数据库备份的APIs函数(C接口),可以很好的解决上述方法存在的不足。通过该组函数,可以将源数据库中的内容拷贝到另一个数据库,同时覆盖目标数据库中的数据。整个拷贝过程可以以增量的方式完成,在此情况下,源数据库也不需要在整个拷贝过程中都被加锁,而只是在真正读取数据时加共享锁。这样,其它的用户在访问源数据库时就不会被挂起。 二、在线备份APIs简介: SQLite提供了以下3个APIs函数用于完成此操作,这里仅仅给出它们的基本用法,至于使用细节可以参考SQLite官方网站"APIs Reference"( http://www.sqlite.org/c3ref