Bms*_*270 4 java sqlite android blob cursor
Android的Cursor Window大小似乎有1MB的限制,这限制了从SQLite读取BLOB的能力.我知道您可能会说我们不应该将BLOB存储在数据库中,但根据定义,BLOB被视为二进制大对象,如果不需要将它们存储在数据库中,则无需在任何数据库引擎中实现此类对象类型.
然而,在几乎所有情况下,Cursor实现的1 MB限制似乎都不够.我需要在SQLite数据库中存储我的二进制数据是有效的,并且它们超过1 MB.SQLite能够完美地处理BLOB,因为C API在Xcode(iPhone平台)中运行得非常好,可以毫无问题地检索大型对象.
我的问题是,如果我们可以在不使用游标的情况下访问Android中的BLOB数据.我正在考虑在Java中对Sqlite进行较低级别的访问.有什么建议?
正如CL所提到的,使用NDK确实是一种在Java语言中通过C语言本地访问Sqlite的方法.但是我意识到如果我想自己编写一个自定义包装器并尝试访问Java中的函数,它可能会变得非常混乱.
在搜索之后,我遇到了一个名为Sqlite4java的开源项目,这是一个围绕Sqlite的紧密包装,编译后可以在包括Android在内的各种平台上使用.此库允许您在不使用Android Cursor的情况下与Sqlite交互,从而消除了限制.
我能够在480毫秒内检索20 MB的Blob.这比通过游标从Sqlite读取一条小记录更快.我相信这可以通过跳过使用Cursor来增强对Sqlite的任何查询.以下是这个伟大图书馆的链接:http://code.google.com/p/sqlite4java/
| 归档时间: |
|
| 查看次数: |
4926 次 |
| 最近记录: |