Android如何使用JDBC连接SQLite数据库?

【首先把结论说出来:不到万不得已最好不要使用JDBC操作SQLite数据库】

最近两天一直在捣鼓JDBC与SQLite相连接的事情,想使用jdbc的preparedStatement类实现对SQLite数据库的操作。在Java项目上能够成功加载JDBC驱动,也就是这句话能够被成功执行: Class.forName("org.sqlite.JDBC") ;,但是一旦移植到Android项目上各种bug横行其道:

【java.lang.ClassNotFoundException: com.sqlite.jdbc.Driver】

【unable to execute dex: gc overhead limit exxeeded】

【An out of memory error has occurred】

【no suitable driver found for jdbc:sqlite:db/test.db】

。。。。。。。。。。

百度了两天,各种解决方案都尝试了,最后还是无法运行。然后翻过去用谷歌搜索了一下答案,发现国外有位网友也有同样的困惑,我就不复制粘贴了,截图如下:

-----------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------

 

他的大概意思就是:我想在我的Android项目中读取一个数据库的内容,所以就把该数据库放在一个文件夹里面。我准备通过JDBC建立与该数据库的连接,然后我导入JDBC 的jar包并且通过如下语句实现驱动的加载与数据库的连接,在Java项目中这样做很成功,但是当我想在Android项目中实现该功能时,中会出现ClassNotFoundException的异常,我检查了自己的项目,没发现什么错误啊。请问为什么会出现这种异常?

有一位网友这样答道:

------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------

他的意思是说:你非得这样做吗?我觉着只有0.1%的Android程序员会在Android项目中使用JDBC,只用0.05的程序员会在Android项目中把JDBC与SQLite数据库结合使用。很多已经Android中已经封装好的类例如SQLiteDatabase SQLiteOpenHelper已经可以提供很强大的数据库操作功能了。 

还有一位网友这样答道:

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 

他的大概意思是说:

JDBC确实不适合在Android上面使用,我绝对不会推荐在Android项目中使用JDBC

JDBC适合于高宽带、低延迟、高可靠性的网络连接,例如B/S,D/S中的数据库服务,Android设备一点也不符合这些特性。

=======================================================================================================

2015年4月9日11:39:23补充

我想在Android中使用JDBC的朋友有一部分是想用JDBC里面的PreparedStatement类吧,因为preparedStatement提供了很多对数据库的便捷操作。如果是这样的话只能说你舍近求远了。在SQLiteDatabase类中已经提供了很强大的功能实现了。SQLiteDatabase的作用类似于JDBC的Connection,例如方法Cursor rawQuery(String sql String[] selectinArgs)返回的Cursor就像JDBC中的ReultSet。JDBC里面的PrepatedStatement提供了setXXX()方法,同样Android中的SQLiteStatement也提供了类似的bindXXX()方法。

========================================================================================================




国外类似问题链接:http://stackoverflow.com/questions/7221620/android-jdbc-not-working-classnotfoundexception-on-driver

总而言之,在Android项目开发中不适合使用JDBC。

 

 

 


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值