Posts tagged: sqlite

sql语句案例

有这样的需求: 要查出来album_id为1和4的记录,因为它们的tag_id是1和2。 这里需要用到子查询。SQL的写法为:    发送文章为PDF   

星期三 七月 13th, 2011 in , , , | 1 Comment »

ios简单sqlite使用

sqlite是嵌入式的和轻量级的sql数据库。sqlite是由c实现的。广泛用于包括浏览器(支持html5的大部分浏览器,ie除外)、ios、android以及一些便携需求的小型web应用系统。 使用sqlite前的准备 使用sqlite是很多做ios开发中第一次面对c的情况,包括我。因为sqlite是c写的,objc可以直接使用c代码。在sqlite前,一般都会使用cocoa touch框架,都是基于objc的。 首先,需要在对应文件的头文件中加入: #import "/usr/include/sqlite3.h" 并在Frameworks中加入所需的库,否则会报错: Undefined symbols:   "_sqlite3_open", referenced from:   加入库的方法是:   日志引用ios简单使用core data    发送文章为PDF   

星期二 九月 28th, 2010 in , , , , , | No Comments »

查看sqlite3表结构的命令

在android下通过adb shell命令可以进入sqlite3的命令行client,见:在android命令行下使用sqlite3。 如果想列出该数据库中的所有表,可: .table 如果想查看这些表的结构: select * from sqlite_master where type="table"; 可以看到类似:    发送文章为PDF   

星期五 七月 30th, 2010 in , , | No Comments »

android下的全文检索支持

android系统支持全文检索, 是通过sqlite的fts3来提供支持的. 见: http://androidappdocs.appspot.com/guide/topics/search/search-dialog.html 的searching your data部分. 原因是如果使用like是很慢的. 在android下如果用like做查询, 比如LIKE somestrin%, 是很慢的, 有多慢呢, 10万行的表, 大概要1300ms吧. 不是我测试的, 见: http://stackoverflow.com/questions/2734828/sqlite-fts3-sumulate-like-somestrin 因此需要通过sqlite3支持的fts3全文检索功能. 具体示例可以参见: http://bakhtiyor.com/2009/08/sqlite-full-text-search/ 运行上面示例的办法是, 解压缩, 然后通过eclipse创建新adt项目, 选择已存在的项目, 然后连接设备运行即可. 从运行效果来看, 英文是没有问题的. 但是中文因为分词方式不一样, 造成无法查询到预期的效果. 比如, 输入”全文检索”四个汉字, 插入到表中, 以”检索”来查询, 就查不到结果, 除非输入”全文检索”四个字才能得到匹配结果. 这说明, fts3没有合适的中文分词, 目前只能适用于比如英文这样带空格的文字分词. 使用sqlite全文检索的步骤如下. 首先要创建VIRTUAL TABLE: CREATE VIRTUAL TABLE records USING FTS3 ( INTEGER PRIMAERY KEY, col_text TEXT ); [...]

星期二 六月 22nd, 2010 in , , , | No Comments »

完善图书查询原型,增加收藏夹功能

完善了一下识别图书ISBN号并输出查询结果的示例中的原型。功能上主要增加了收藏图书功能。 扫描到图书后: 可以点击收藏按钮,将当前图书记录到手机端的sqlite数据库。目前只记录了ISBN号和书名。因为豆瓣的政策是不允许缓存图书的内容。 在页面中增加了订购数量,目前点击提交按钮,会将该数字发送给当前的Activity,但是没有做后续处理。不过后面的任务不难了,存入数据库即可。 日志引用图书比价原型    发送文章为PDF   

Sqlite JDBC不支持可更新的游标

今天手写一些jdbc代码,基于sqlite的。为了省事儿,试了一下使用可更新游标,结果异常。 是意料之中的事情。引发异常的代码: Statement statement=connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);    发送文章为PDF   

星期四 三月 25th, 2010 in , , , | No Comments »

java编写sqlite3插入blob的办法

这里java操作sqlite3数据库,用的是java编写最简单的sqlite程序的方案。 目前测试可用的方式: statement.setBytes(i++, outputStream.toByteArray()); 其他方式,比如setBlob,或者setInputStream方式,都会报告抽象方法错误(AbstractMethodError)。说明该sqlite3驱动没有支持这些方法。 那么,setBytes的缺点是,二进制数据必须作为字节数组一次性的加载到内存,增加虚拟机的内存消耗,对于大图片,很容易引起OOM。    发送文章为PDF   

星期二 三月 23rd, 2010 in , , , | No Comments »

java编写最简单的sqlite程序

sqlite是c写的,没有官方的操作sqlite的java api。如果要使用Java编写sqlite代码,只能使用第三方的类库。目前我找到的有两种: SQLiteJDBC,http://www.zentus.com/sqlitejdbc/,这是一个纯Java的实现,只需把类库导入就可以使用,很方便,缺点嘛,就是慢一些; SQLite Java Wrapper,http://www.ch-werner.de/javasqlite/,安装的时候需要本地库,比如windows下的dll文件,和SQLiteJDBC的优缺点相反。 考虑到我们项目的需求,用SQLiteJDBC就够了。很小的项目,就是将xml文件导入生成sqlite db文件,因此也就不用什么maven和ant了。 eclipse项目的结构。 日志引用java编写sqlite3插入blob的办法    发送文章为PDF   

星期五 三月 19th, 2010 in , , , | No Comments »

android操作sqlite3的blob字段

sqlite3很容易使用。 这张图里面的标注部分,来自数据库的字段。见表结构: 数据库文件是从网上下载得到的,见android使用sqlite3数据库(网络下载文件)。 日志引用在content provider中使用二进制数据    发送文章为PDF   

星期二 三月 16th, 2010 in , , , , | 1 Comment »

在android命令行下使用sqlite3

现在已经可以在真机(nexus one)下使用sqlite3命令行工具了。不想在模拟器上面使用,android的模拟器和真机比较起来,太慢了,尤其是启动的时候。 如果在android上无法使用下面提到的命令行工具,报告: sqlite3: not found 那么可能需要安装带sqlite3的ROM,见nexus one更新第三方ROM。另外,想使用sqlite3访问程序私有目录下的文件,需要具备ROOT权限,见nexus one获取root权限。 如果这两条都具备了,可以开始使用。 日志引用查看sqlite3表结构的命令    发送文章为PDF   

星期二 三月 16th, 2010 in , , , | 2 Comments »