SQLite是一个开源的嵌入式关系数据库,它在2000年由D. Richard Hipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠。
SQLite是一款非常流行的嵌入式数据库,它支持SQL查询,并且只用很少的内存。Android在运行时集成了SQLite,所以每个Android应用程序都可以使用SQLite数据库。对数熟悉SQL的开发人员来时,使用SQLite相当简单。可以,由于JDBC不适合手机这种内存受限设备,所以Android开发人员需要学习新的API来使用SQLite。本文主要讲解SQLite在Android环境中的基本使用。SQLite介绍SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。
SQLlite简单教程
Sqlite3的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对sqlite3的研究列出来,以备忘记。这里要注明,我是一个跨平台专注者,并不喜欢只用windows平台。我以前的工作就是为unix平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何windows的东西,只使用标准C或标准C++。但是,我没有尝试过在别的系统、别的编译器下编译,因此下面的叙述如果不正确,则留待以后修改。下面我的代码仍然用VC编写,因为我觉得VC是一个很不错的IDE,可以加快代码编写速度(例如配合Vassist)。下面我所说的编译环境,是VC2003。
SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠。 SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。
SQLite基本语法手册。SQLite是一个软件库,用于实现自包含、非服务式、零配置、事务化的SQL数据库引擎。SQLite是一个嵌入式SQL数据库引擎,与其它大多数SQL数据库不同的是,SQLite没有独立的服务进程。SQLite直接读写原始的磁盘文件,一个拥有多个表、索引、触发器和视图的完整SQL数据库就包含在一个独立的磁盘文件中。
前面也用到过sqlite,例如在对pickle模块的学习,以及我所写的下载糗事百科的程序中都大量的使用到了sqlite,这里将python对sqlite的支持抽取出来专门进行讲解。 从python 2.5开始(前面的我就不知道了,没用过~,现在用的python 3.0,相信可以用上5年吧),python提供了对sqlite3的内生支持,一般来说,可以在PythonDir\Dlls\文件夹下发现 sqlite3.dll和_sqlite3.pyd ,这2个文件是python支持sqlite3的基础;其次就是下面说要描述的sqlite3模块了。
SQLite通过值的表示法来判断其类型,下面就是SQLite的推理方法: SQL语句中用单引号或双引号括起来的文字被指派为TEXT。 如果文字是未用引号括起来的数据,并且没有小数点和指数,被指派为INTEGER。 如果文字是未用引号括起来的数据,并且带有小数点或指数,被指派为REAL。 用NULL说明的值被指派为NULL存储类。 如果一个值的格式为X'ABCD',其中ABCD为16进制数字,则该值被指派为BLOB。X前缀大小写皆可。
SQLite版本的的ALTER TABLE命令允许用户重命名或添加新的字段到已有表中,不能从表中删除字段。 RENAME TO语法用于重命名表名 [database-name.]table-name到new-table-name。这一命令不能用于在附加数据库之间移动表,只能在同一个数据库中对表进行重命名。
Sqlite3的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对sqlite3的研究列出来,以备忘记。这里要注明,我是一个跨平台专注者,并不喜欢只用windows平台。我以前的工作就是为unix平台写代码。下面我所写的东西,虽然没有验证,但是我已尽量不使用任何windows的东西,只使用标准C或标准C++。但是,我没有尝试过在别的系统、别的编译器下编译,因此下面的叙述如果不正确,则留待以后修改。下面我的代码仍然用VC编写,因为我觉得VC是一个很不错的IDE,可以加快代码编写速度(例如配合Vassist)。
本文分析的SQLite版本为3.6.18。现在已经变成3.6.20了,但本文中所涉及的内容变化不大。读者最好能下载一个源程序,然后将本文与源程序对照阅读。这样也有利于发现本文的错误,说实话吧,我写的时候是连分析带猜的,错误肯定很多。参考文献:1-The Definitive Guideto SQLite.Michael Owens:比较经典的SQLite著作。我边看边翻译了其中的部分内容,但翻得不好,大家还是看原文吧。2-SQLite文件格式分析_v102.空转:我写的,写得特好。现在是v102版,跟前面的版本相比增加了不少背景知识,对文件格式的介绍算是很全面了。看本文之前,应该先浏览一下此参考文献。
使 用sqlite的connect可以创建一个数据库文件,上面我指明了路径。当数据库文件不存在的时候,它会自动创建。如果已经存在这个文件,则打开这个 文件。encoding指明保存数据所使用的编码,这里cp936是 Python 中自带的编码,其实就是GBK编码。cx为数据库连接对象。
SQLite是一个开源的嵌入式关系数据库,它在2000年由D.RichardHipp发布,它的减少应用程序管理数据的开销,SQLite可移植性好,很容易使用,很小,高效而且可靠。SQLite嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。嵌入式数据库的一大好处就是在你的程序内部不需要网络配置,也不需要管理。因为客户端和服务器在同一进程空间运行。SQLite的数据库权限只依赖于文件系统,没有用户帐户的概念。SQLite有数据库级锁定,没有网络服务器。它需要的内存,其它开销很小,适合用于嵌入式设备。你需要做的仅仅是把它正确的编译到你的程序。
BLOB(BinaryLargeObject):可存储大型二进制对象,如图形、视频、声音等文件。JAVA对SQLiteBLOB的操纵:存:直接把文件读取到Byte数组中,再把Byte数组直接插入到数据库。
本文分析的SQLite版本为3.6.18。现在已经变成3.6.20了,但本文中所涉及的内容变化不大。读者最好能下载一个源程序,然后将本文与源程序对照阅读。这样也有利于发现本文的错误,说实话吧,我写的时候是连分析带猜的,错误肯定很多。
SQLite对于整个数据库文件进行读取/写入锁定. 这意味着如果任何进程读取了数据库中的某一部分, 其他所有进程都不能再对该数据库的任何部分进行写入操作. 同样的, 如果任何一个进程在对数据库进行写入操作, 其他所有进程都不能再读取该数据库的任何部分. 对于大多数情况这不算是什么问题. 在这些情况下每个程序使用数据库的时间都很短暂, 并且不会独占, 这样锁定至多会存在十几毫秒. 但是如果有些程序需要高并发, 那么这些程序就需要寻找其他的解决方案了
SQLite库可以解析大部分标准SQL语言。但它也省去了一些特性 并且加入了一些自己的新特性。这篇文档就是试图描述那些SQLite支持/不支持的SQL语法的。 查看关键字列表。
SQLite版本的的ALTER TABLE命令允许用户重命名或添加新的字段到已有表中,不能从表中删除字段。 RENAME TO语法用于重命名表名 [database-name.]table-name到new-table-name。这一命令不能用于在附加数据库之间移动表,只能在同一个数据库中对表进行重命名。
SQLite作为一个开源的嵌入式数据库产品,具有系统开销小,检索效率高的特性,适用于手机、PDA、机顶盒设备等电器,并且作为嵌入式数据库在可下载的消费类应用程序中运行的很好。这篇文章介绍嵌入式数据库产品SQLite 的技术特点,并着重讨论研究与Java语言之间的接口,并以实例说明如何使用JAVA 开发基于SQLite 的应用程序。
前序Sqlite3的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。这些天再次研究它,又有一些收获,这里把我对sqlite3的研究列出来,以备忘记。