【首先把结论说出来:不到万不得已最好不要使用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。

SQLite 是一款非常流行的嵌入式 数据库 ,它支持 SQL 查询,并且只用很少的内存。 Android 在运行时集成了 SQLite ,所以每个 Android 应用程序都可以 使用 SQLite 数据库 。对数熟悉 SQL 的开发人员来时, 使用 SQLite 相当简单。可以,由于 JDBC 不适合手机这种内存受限设备,所以 Android 开发人员需要学习新的 API 来 使用 SQLite 。本文主要讲解 SQLite Android 环境中的基本 使用 SQLite 介绍 SQLite 一个非常流行的嵌入式 数据库 ,它支持 SQL 语言,并且只利用很少的内存有很好的性能。此外它还是开源
写了一段算法,需要 使用 数据库 ,写完才发现, android 的app很少有用 jdbc 连自己的sqllite的,但是我又不想再去多学一套操作 数据库 的语法~怎么办? 使用 sqldroid! * JDBC 方式 连接 数据库 * @return * @throws BaseException public Connection getConnection() {
Android 数据库 SQLite 数据库 导出查看 数据库 文件 在 android 中,为某个应用程序创建的 数据库 ,只有它可以访问,其它应用程序是不能访问的, 数据库 位于 Android 设备/data/data/package_name/databases文件夹中。 想要将 数据库 文件导出可以 使用 eclipse. 查看 数据库 使用 SQlite Database Browser 扩展 SQLite Open...
1. 数据库 连接 创建、释放频繁会造成资源的浪费,从而影响系统的性能。如果 使用 数据库 连接 池技术可能会使其好转。 2.sql语句中存在硬编码问题,造成代码的不易维护,实际应用中sql变化的可能较大,容易造成整体的 java 代码的改变 3. 使用 prepreparedStatement向占位符传递参数存在硬编码问题,因为sql中的where条件可能不一定,可能多和少,很容易要造成修改sql代码,系统不易维...
SQLite 简介 SQLite 是一个开源的嵌入式关系 数据库 ,实现自包容、零配置、支持事务的SQL 数据库 引擎。其特点是高度便携、 使用 方便、结构紧凑、高效、可靠。与其他 数据库 管理系统不同, SQLite 的安装和运行非常简单,在大多数情况下只要确保 SQLite 的二进制文件存在即可开始创建、 连接 使用 数据库 。 除了应用于 Android 、IOS等移动设备外, SQLite 在小型网站以及PC客户端上也有着相当广泛的应用。下面我们学习如何在PC上建立 SQLite 数据库 以及如何利用 JDBC 的方式来操作 SQLite 数据库 。在正式
之前操作 sqlite 一直用sdk中的 SQLite OpenHelper,在多线程操作 数据库 (特别是插入数据)的时候,总是提示 sqlite 已经被锁定,其它线程就无法继续了。 今天研究了一下 android jdbc 操作 sqlite ,再用多线程去操作 数据库 的时候就不会有这个状况了
您可以 使用 Qt 提供的 QSqlDatabase 类来 连接 SQLite 数据库 。首先,您需要在项目中包含 QtSql 模块,然后 使用 以下代码 连接 数据库 : QSqlDatabase db = QSqlDatabase::addDatabase("Q SQLITE "); db.setDatabaseName("database.db"); if (!db.open()) { qDebug() << "Failed to connect to database."; 其中,"database.db" 是您要 连接 SQLite 数据库 文件名。接下来,您可以 使用 QSqlQuery 类执行 SQL 查询和操作 数据库 。例如,以下代码创建一个名为 "users" 的表: QSqlQuery query; query.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)"); 然后,您可以插入数据到表中: query.prepare("INSERT INTO users (name) VALUES (:name)"); query.bindValue(":name", "John Doe"); query.exec(); 最后,您可以查询数据并 使用 QSqlQuery::next() 函数遍历结果集: query.exec("SELECT * FROM users"); while (query.next()) { int id = query.value().toInt(); QString name = query.value(1).toString(); qDebug() << "User #" << id << ": " << name; 希望这可以帮助您在 Qt 中 使用 SQLite 数据库