上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页
摘要: 三、高效的批量数据插入: 在给出操作步骤之前先简单说明一下批量插入的概念,以帮助大家阅读其后的示例代码。事实上,批量插入并不是什么新的概念,在其它关系型数据库的C接口API中都提供了一定的支持,只是接口的实现方式不同而已。纵观众多流行的数据库接口,如OCI(Oracle API)、MySQL API和PostgreSQL API等,OCI提供的编程接口最为方便,实现方式也最为高效。SQLite作为一种简单灵活的嵌入式数据库也同样提供了该功能,但是实现方式并不像其他数据库那样方便明显,它只是通过一种隐含的技巧来达到批量插入的目的,其逻辑如下: 1). 开始一个事物,以保证后面的数据操作语句均在该 阅读全文
posted @ 2012-03-07 09:09 OrangeAdmin 阅读(19479) 评论(3) 推荐(3) 编辑
摘要: 一、获取表的Schema信息: 1). 动态创建表。 2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型。 3). 删除该表。 见以下代码及关键性注释: 1 #include <sqlite3.h> 2 #include <string> 3 4 using namespace std; 5 6 void doTest() 7 { 8 sqlite3* conn = NULL; 9 //1. 打开数据库10 int result = sqlite3_open("D:/mytest.db",&conn);11 阅读全文
posted @ 2012-03-05 07:23 OrangeAdmin 阅读(15539) 评论(3) 推荐(3) 编辑
摘要: 一、概述: 在SQLite中,锁和并发控制机制都是由pager_module模块负责处理的,如ACID(Atomic, Consistent, Isolated, and Durable)。在含有数据修改的事务中,该模块将确保或者所有的数据修改全部提交,或者全部回滚。与此同时,该模块还提供了一些磁盘文件的内存Cache功能。 事实上,pager_module模块并不关心数据库存储的细节,如B-Tree、编码方式、索引等,它只是将其视为由统一大小(通常为1024字节)的数据块构成的单一文件,其中每个块被称为一个页(page)。在该模块中页的起始编号为1,即第一个页的索引值是1,其后的页编号以此类 阅读全文
posted @ 2012-03-02 08:55 OrangeAdmin 阅读(20531) 评论(8) 推荐(5) 编辑
摘要: 一、简介: 尽管SQLite的数据库是由单一文件构成,然而事实上在SQLite运行时却存在着一些隐含的临时文件,这些临时文件是出于不同的目的而存在的,对于开发者而言,它们是透明的,因此在开发的过程中我们并不需要关注它们的存在。尽管如此,如果能对这些临时文件的产生机制和应用场景有着很好的理解,那么对我们今后应用程序的优化和维护都是极有帮助的。在SQLite中主要产生以下七种临时文件,如: 1). 回滚日志。 2). 主数据库日志。 3). SQL语句日志。 4). 临时数据库文件。 5). 视图和子查询的临时持久化文件。 6). 临时索引文件。 7). VACUUM命令使用的临时数据库文件。 二 阅读全文
posted @ 2012-03-01 09:22 OrangeAdmin 阅读(10638) 评论(3) 推荐(5) 编辑
摘要: 一、内存数据库: 在SQLite中,数据库通常是存储在磁盘文件中的。然而在有些情况下,我们可以让数据库始终驻留在内存中。最常用的一种方式是在调用sqlite3_open()的时候,数据库文件名参数传递":memory:",如: rc = sqlite3_open(":memory:", &db); 在调用完以上函数后,不会有任何磁盘文件被生成,取而代之的是,一个新的数据库在纯内存中被成功创建了。由于没有持久化,该数据库在当前数据库连接被关闭后就会立刻消失。需要注意的是,尽管多个数据库连接都可以通过上面的方法创建内存数据库,然而它们却是不同的数据库 阅读全文
posted @ 2012-02-29 08:14 OrangeAdmin 阅读(37222) 评论(5) 推荐(7) 编辑
摘要: 一、常用备份: 下面的方法是比较简单且常用的SQLite数据库备份方式,见如下步骤: 1). 使用SQLite API或Shell工具在源数据库文件上加共享锁。 2). 使用Shell工具(cp或copy)拷贝数据库文件到备份目录。 3). 解除数据库文件上的共享锁。 以上3个步骤可以应用于大多数场景,而且速度也比较快,然而却存在一定的刚性缺陷,如: 1). 所有打算在源数据库上执行写操作的连接都不得不被挂起,直到整个拷贝过程结束并释放文件共享锁。 2). 不能拷贝数据到in-memory数据库。 3). 在拷贝过程中,一旦备份数据库所在的主机出现任何突发故障,备份数据库可能会被破坏。 在SQ 阅读全文
posted @ 2012-02-27 07:25 OrangeAdmin 阅读(18195) 评论(0) 推荐(4) 编辑
摘要: 工欲善其事,必先利其器。学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的。最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快。言归正传吧,在SQLite的官方下载网站,提供了支持多个平台的命令行工具,使用该工具我们可以完成大多数常用的SQLite操作,就像sqlplus之于Oracle。以下列表给出了该工具的内置命令:命令名命令说明.help列出所有内置命令。.backup DBNAME FILE备份指定的数据库到指定的文件,缺省为当前连接的main数据库。.databases列出当前连接中所有attached数据库名和文件名。.dump TABLE. 阅读全文
posted @ 2012-02-24 08:57 OrangeAdmin 阅读(20347) 评论(2) 推荐(4) 编辑
摘要: 一、存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型: NULL: 表示该值为NULL值。 INTEGER: 无符号整型值。 REAL: 浮点值。 TEXT: 文本字符串,存储使用的编码方式为UTF-8、UTF-16BE、UTF-16LE。 BLOB: 存储Blob数据,该类型数据和输入数据完全相同。 由于SQLite采用的是动态数据类型,而其他传统的关系型数据库使用的是静态数据类型,即字段可以存储的数据类型是在表声明时即以确定的,因此它们之间在数据存储方面还是存在着很大的差异。在SQLite中,存储分类和数据类型也有一定的差别,如INTEGER存储类别可以包含6种不.. 阅读全文
posted @ 2012-02-22 08:56 OrangeAdmin 阅读(59173) 评论(9) 推荐(13) 编辑
摘要: 一、常用表达式: 和大多数关系型数据库一样,SQLite能够很好的支持SQL标准中提供的表达式,其函数也与SQL标准保持一致,如: || * / % + - << >> & | < <= > >= = == != <> IS IS NOT IN LIKE AND OR ~ NOT 在上面的表达式中,唯一需要说明的是"||",该表达式主要用于两个字符串之间的连接,其返回值为连接后的字符串,即便该操作符两边的操作数为非字符串类型,在执行该表达式之前都需要被提前转换为字符串类型,之后再进行连接。二、条件表达式: 阅读全文
posted @ 2012-02-20 07:04 OrangeAdmin 阅读(8236) 评论(1) 推荐(3) 编辑
摘要: 一、Attach数据库: ATTACH DATABASE语句添加另外一个数据库文件到当前的连接中,如果文件名为":memory:",我们可以将其视为内存数据库,内存数据库无法持久化到磁盘文件上。如果操作Attached数据库中的表,则需要在表名前加数据库名,如dbname.table_name。最后需要说明的是,如果一个事务包含多个Attached数据库操作,那么该事务仍然是原子的。见如下示例: sqlite> CREATE TABLE testtable (first_col integer); sqlite> INSERT INTO testtable VA 阅读全文
posted @ 2012-02-18 12:49 OrangeAdmin 阅读(21760) 评论(3) 推荐(4) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 19 下一页