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