Using jdbc to access sqlite in Android
2016-05-17 21:12
423 查看
Why
Android已经提供了SQLiteOpenHelper实现sqlite数据库CRUD等基本操作,但是在某些情况下,可能通过jdbc让java直接访问sqlite数据库更合理。例如:1、复杂逻辑存在的情况下,我们更倾向于自己编写SQL语句并执行;2、希望创建内存数据库并允许频繁、并发访问的情况……Android自有SQLite内存数据库操作局限性有哪些?TODO
通过jdbc连接sqlite
不同环境下的用法对比
在Windows/Linux环境中,使用Java编程时,可通过sqlite-jdbc 访问并使用sqlite;而在Android环境中,则可通过SQLDroid直接访问sqlite数据库。两者的区别,仅仅在于加载驱动类名和连接字符串的不同。
Comparison | sqlite-jdbc | SQLDroid |
---|---|---|
Driver Name | org.sqlite.JDBC | org.sqldroid.SQLDroidDriver |
JDBC连接字符串 | jdbc:sqlite:dbfname | jdbc:sqldroid:dbfname |
内存数据库连接 | jdbc:sqlite::memory: | jdbc:sqldroid::memory: |
示例
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Sample{ public static void main(String[] args) throws ClassNotFoundException { // load the sqlite-JDBC driver using the current class loader Class.forName("org.sqlite.JDBC"); Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // create a database connection conn = DriverManager.getConnection("jdbc:sqlite:sample.db"); stmt = conn.createStatement(); stmt.setQueryTimeout(30); // set timeout to 30 sec. stmt.executeUpdate("drop table if exists person"); stmt.executeUpdate("create table person (id integer, name string)"); stmt.executeUpdate("insert into person values(1, 'leo')"); stmt.executeUpdate("insert into person values(2, 'yui')"); rs = stmt.executeQuery("select * from person"); while(rs.next()){ // read the result set System.out.println("name = " + rs.getString("name")); System.out.println("id = " + rs.getInt("id")); } } catch(SQLException e){ // if the error message is "out of memory", // it probably means no database file is found System.err.println(e.getMessage()); }finally{ // close rs // close stmt // close conn } } }
哪种方式更快?
对比Android自有SQLite操作类与SQLDroid操作数据库,两种方式在查询上的表现?TODOreference
SQLDroid Project in githubXerial sqlite-jdbc
相关文章推荐
- Android与JS交互 -----点击js页面复制一条信息到android 剪切板中
- Android——计算器
- xmlns:android作用以及自定义布局属性
- 残缺棋盘 android实现颜色填充
- android开发调试工具一览
- Android Studio生成aar包并在其他工程引用aar包
- android静音播放视频
- Android Handler(子线程Handler)异步消息处理机制的妙用(活用信号量) 创建强大的图片加载类
- 【Android】Activity的启动模式
- android视频播放
- Android 数据存储
- Android绘图API开发自定义控件视图
- Android BaseAdapter
- Android开源框架Universal-Image-Loader源码解析
- Android文件管理器安装apk流程记录
- [其他]Gson的简单使用(开始到结束)
- android.database.sqlite.SQLiteCantOpenDatabaseException: unknown error (code 14): Could not open
- android 从底部划出Dialog
- 在ubuntu下编译ijkplayer-android
- [视图]上面带描边的圆角,底部不描边的直角 按键xml 去局部描边