1、概述:

本项目需要在多平台上(mips必须支持)操作嵌入式数据库sqlite,而最新的sqlite-jdbc-3.15.1.jar的本地驱动只含有少量的平台,于是解决支持mips平台实在必行。方法有多,具体如下。

1.1 SQLite三种JDBC驱动的区别

摘自http://blog.sina.com.cn/s/blog_654337ca01016x4n.html

在DBeaver中看到SQLite有三种JDBC驱动,查了它们官方网站的相关解释,发现它们还是挺不一样的。

 
SQLite Wrapper by Christian
这个驱动其实是在本地C/C++的SQLite上用JDBC实现进行了包装。大小100+K。
优点:体积小;速度快
缺点:依赖本地SQLite驱动,每个平台需要分别编译
具体用法,详见http://www.doc88.com/p-1337567572201.html(标题为[精品]JAVA在SQLite嵌入式数据库中的应用)
 
SQLite Zentus Driver
这个驱动是SQLite数据库的纯Java实现,仅需要这个驱动就可以操作SQLite数据库文件。大小2.6M。
优点:无其他依赖
缺点:速度稍慢(纯Java实现),没有找到驱动下载地址
 
SQLite Xerial Driver
这个驱动扩展了Zentus版本,并且在jar中加入了Windows、Linux、Mac OS X三种本地SQLite驱动库,使四种驱动并存于jar包中。其目的在于在不同的操作系统中自动使用不同的本地驱动(在这三种以外的系统中则使用纯Java实现的驱动),既保证无其他依赖,又保证速度最快。但是因为包含这么多版本的驱动,所以就比较大,大小有3M。
优点:速度快;无其他依赖
缺点:体积大
 
最后忽然发现,Zentus驱动从2009年6月就没有再更新了(最新版本基于SQLite3.6.14.2),Xerial驱动从2010年8月就没有再更新……SQLite Wrapper貌似一直在更新,目前最新的版本是2012年2月的。

1.2 SQLite Xerial Driver 驱动

  • 方法1:mips上也使用本地库,下载源代码编译即可。不过编译很费劲,对于不可以联网的单位工作机,根本行不通。

源代码下载地址

  • 方法2:使用jdbc的jdbc-odbc桥方式。

第一步:加载驱动(作用是把需要的驱动程序加入内存)

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

第二步:得到连接(指定连接到哪个数据源),如果配置数据源时选择的是Windows NT验证方式,则不需写出用户名和密码

Connection ct=DriverManager.getConnection("jdbc:odbc:simpledb")如果有用户名和密码,则在数据源之后写出。

jdk从1.8开始,删除了jdbc-odbc桥,所以odbc的驱动是用不了的,建议重新安装jdk1.7或者更低的版本。此方案行得通,不过强烈要求jdk版本低于1.7或者更低版本,不利于jdk的升级。

摘自http://blog.csdn.net/u011502222/article/details/44234103  (文章标题为java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver解决方法!)

JDK7  和  JDK8  貌似都不支持  JDBC-ODBC  桥连,所以最好下个版本  6

摘自 http://wenku.baidu.com/link?url=Tz8acJQlGCGQgejp7D4DJ0o_54AcohTmGm2c47Cy7X3y1nrLwyIap4pIuHnaVB_01WlFlTQ12NoHKidcwmNLYvKasEEhgqgI-WjVOg1C0xK (文章标题为JDBC-ODBC桥连access教程)

  • 方法3: 使用纯java的SQLite(Applies to versions before 3.7.15)不包含3.7.15

sqlite-jdbc-3.7.2.jar的下载地址

http://www.java2s.com/Code/Jar/s/Downloadsqlitejdbc372jar.htm本项目的sqlite-jdbc-3.7.2.jar是从此链接下载的,因为下边的链接资源不畅通。

https://bitbucket.org/xerial/sqlite-jdbc/downloads?tab=tags

2、sqlite-jdbc-3.15.1.jar   Supported Operating Systems

摘自https://bitbucket.org/xerial/sqlite-jdbc

Since sqlite-jdbc-3.6.19, the natively compiled SQLite engines will be used for the following operating systems:

  • Windows XP, Vista (Windows, x86 architecture, x86_64)
  • Mac OS X 10.4 (Tiger), 10.5(Leopard), 10.6 SnowLeopard (for i386, x86_64, Intel CPU machines)
  • Linux i386 (Intel), amd64 (64-bit X86 Intel processor)

In the other OSs not listed above, the pure-java SQLite is used. (Applies to versions before 3.7.15)

If you want to use the native library for your OS, [build the source from scratch.编译很麻烦,且跨平台性不好,到另一平台需要继续重新编译

3、JDBC 连接 使用sqlite-jdbc-3.7.2.jar操作数据库报错:java.sql.SQLException: out of memory,解决方案参考接下来的详细描述。

java sqlite out of memory异常

摘自http://www.cnblogs.com/cnryb/archive/2012/06/13/2548445.html

今天用sqlite写点东西eclips给我了这个东西

out of memory

java.sql.SQLException: out of memory
    at org.sqlite.DB.throwex(DB.java:252)
    at org.sqlite.NestedDB.open(NestedDB.java:47)
    at org.sqlite.Conn.<init>(Conn.java:36)
    at org.sqlite.JDBC.connect(JDBC.java:38)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at com.loveoop.sqlite.Test.main(Test.java:19)

 

原因:目录结构中存在中文,

解决方案:把中文修改为英文~~~~。

Good luck!!

mips平台使用jdbc操作sqlite的最终解决方案的更多相关文章

  1. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  2. [Sqlite]--&gt;Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作

    引:     1, Sqlite在Windows.Linux 和 Mac OS X 上的安装过程     2.嵌入式数据库的安装.建库.建表.更新表结构以及数据导入导出等等具体过程记录     3,嵌 ...

  3. JDBC访问及操作SQLite数据库

    SQLite 是一个开源的嵌入式关系数据库,其特点是高度便携.使用方便.结构紧凑.高效.可靠. 与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进 ...

  4. UWP: 在 UWP 中使用 Entity Framework Core 操作 SQLite 数据库

    在应用中使用 SQLite 数据库来存储数据是相当常见的.在 UWP 平台中要使用 SQLite,一般会使用 SQLite for Universal Windows Platform 和 SQLit ...

  5. Spring JDBC Framework详解——批量JDBC操作、ORM映射

    转自:https://blog.csdn.net/yuyulover/article/details/5826948 一.spring JDBC 概述 Spring 提供了一个强有力的模板类JdbcT ...

  6. 如何C#操作SQLite数据库

    或许有人之前在java开发中使用过SQLite,对它有些印象.在用Winform或Wpf开发小应用程序时,发现用SQLite数据库也是不错的.就像一个会员管理软件,开发完毕后,可以省去想sqlserv ...

  7. JDBC操作MySQL(crud)

    这两天复习了一下JDBC操作MySQL,把crud操作的例子记一下, 类库链接(mysql-connector-java-5.1.37-bin.jar):http://files.cnblogs.co ...

  8. 使用JDBC操作SAP云平台上的HANA数据库

    本文假设您对JDBC(Java Database Connectivity)有最基本的了解.您也可以将其同ADBC(ABAP Database Connectivity)做对比,细节请参考我的博客AD ...

  9. C#操作SQLite方法实例详解

    用 C# 访问 SQLite 入门(1) CC++C#SQLiteFirefox  用 C# 访问 SQLite 入门 (1) SQLite 在 VS C# 环境下的开发,网上已经有很多教程.我也是从 ...

随机推荐

  1. 解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)

    当我尝试在java中通过ProcessBuilder运行window的cmd命令时出现错误: public static void main(String [] args) throws IOExce ...

  2. 利用Excel批量高速发送电子邮件

    利用Excel批量高速发送电子邮件,分两步: 1. 准备待发送的数据: a.) 打开Excel,新建Book1.xlsx b.) 填入以下的内容, 第一列:接收人,第二列:邮件标题,第三列:正文,第四 ...

  3. ViewPager顶部标题控件PagerSlidingTabStrip

    最近搞一个项目,要求做一个和网易新闻顶部菜单的滑动效果,如图: 顶部标题中下面有个红色的矩形小条,左右滑动时会跟随手势动态滑动,效果很绚丽,唉,特效啊! 自己搞了一上午无果,还是是github上找大神 ...

  4. IOS详解TableView——选项抽屉(天猫商品列表)

    在之前的有篇文章讲述了利用HeaderView来写类似QQ好友列表的表视图. 这里写的天猫抽屉其实也可以用该方法实现,具体到细节每个人也有所不同.这里采用的是点击cell对cell进行运动处理以展开“ ...

  5. python - 执行父类中的方法

    执行父类中的方法: class C1: def f1(self): print('c1.f1') return 123 class C2(C1): def f1(self): #主动执行父类的f1方法 ...

  6. asp.net实现将网页内容输出到word并下载到本地

    个人觉得要实现这个功能如果没有类库提供的几个关键函数,还是比较繁琐的.所以首先介绍几个将要在代码中使用的关键函数和参数,然后再说函数实现.注意问题等. 关键函数: 1.函数原型:Response.Ap ...

  7. 通过maven创建自己的archetype

    最近项目组做好一套框架,为了推广需要创建一些空白项目给项目组使用,因为所有的空白项目里面的配置基本上都是一样的,为了减少重复工作,想通过maven创建一个自己的archetype,于是在网上大致搜了一 ...

  8. 修饰器模式(day04)

    修饰器设计模式 --最近我给女朋友买了一款可以更换外壳的手机.现在的外壳是红色的,假如我想用这款手机的时候,会更换成银灰色的外壳.但是我不能随意更换天线或者话筒,因为这些功能模块在手机生产的时候就已经 ...

  9. 记一次令人发狂的 bug Eclipse 开不开 tomcat 7.0

    改项目,结果发现以前的项目也出了问题,就删除了系统用户下面workplace里的文件夹,结果,eclipse被清空,重新添加项目,发现一堆bug; 最让我崩溃的是,用tomcat 7.0跑项目,反复出 ...

  10. Qt中gb2312/GBK的URL编解码函数

    编码函数: QByteArray encodeURI(QString str) { QByteArray array; QTextCodec *codec=QTextCodec::codecForNa ...