引:

    1, Sqlite在Windows、Linux 和 Mac OS X 上的安装过程

    2。嵌入式数据库的安装、建库、建表、更新表结构以及数据导入导出等等具体过程记录

    3,嵌入式数据库事务理解以及实例操作

    4。数据迁移备份--从低版本号3.6.2到高版本号3.8.6


序言:

SQLite是遵守ACID 的关系型数据库管理系统,它包括在一个相对小的C库中。

它是D.RichardHipp建立的公有领域项目。

不像常见的客户-server范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以基本的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和总体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件里。

它的简单的设计是通过在開始一个事务的时候锁定整个数据文件而完毕的。

一,准备sqlite数据源
因为sqlite是内存数据库,还会有一个数据文件,本质上是去訪问一个文件,所以能够把linux下的sqlite的库文件copy出来到自己笔记本本地,然后在调用java程序訪问操作sqlite库。

(1),安装sqlite
下载地址: Wget http://www.sqlite.org/2014/sqlite-autoconf-3080403.tar.gz
開始安装:
tar xvfz sqlite-autoconf-3080403.tar.gz
cd sqlite-autoconf-3080403
./configure --prefix=/usr/local
make
make install

(2),准备数据源
[root@localhost sqlite-autoconf-3080403]# sqlite3 tim.db
SQLite version 3.8.4.3 2014-04-03 16:53:12
Enter ".help" for usage hints.
sqlite> .table
sqlite> create table t1(id int);
sqlite> insert into t1 select 1;
sqlite> .exit
[root@localhost sqlite-autoconf-3080403]# ll tim.db
-rw-r--r-- 1 root root 2048 Aug 29 09:34 tim.db
[root@localhost sqlite-autoconf-3080403]#

(3)。通过SecureFX工具把tim.db数据文件copy到本地磁盘E盘根文件夹以下,例如以下图所看到的:

二,開始准备Eclipse环境
载入jdbc的jar包,jdbc的jar包 sqlitejdbc-v033-nested.jar,下载地址为:http://pan.baidu.com/s/1hqj7tT6

而且将其加入到classpath系统环境变量中:点击javaproject右键,选择最后一个选项Properties,再选择Java Build Path,再选择Libraries,再选择Add External JARs...。然后载入本地的sqlitejdbc-v033-nested.jar包,载入路径步骤例如以下图所看到的:

三,编写java代码连接sqlite数据库操作
(1)。创建java代码測试类

  1. package foo;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.ResultSet;
  5. import java.sql.Statement;
  6. /**
  7. * @author Tim
  8. */
  9. public class JavaSqlite {
  10. public static void main(String[] args) {
  11. // TODO Auto-generated method stub
  12. try {
  13. // 0 连接SQLite的JDBC
  14. String sql=\"jdbc:sqlite://e:/tim.db\";
  15. Class.forName(\"org.sqlite.JDBC\");
  16. // 1 建立一个数据库名zieckey.db的连接,假设不存在就在当前文件夹下创建之
  17. Connection conn = DriverManager.getConnection(sql);
  18. Statement stat = conn.createStatement();
  19. // 2 创建一个表tbl1。录入数据
  20. stat.executeUpdate(\"drop table if exists tbl1;\");
  21. stat.executeUpdate(\"create table if not exists tbl1(name varchar(20), salary int);\");// 创建一个表。两列
  22. stat.executeUpdate(\"insert into tbl1 values(\'ZhangSan\',8000);\"); // 插入数据
  23. stat.executeUpdate(\"insert into tbl1 values(\'LiSi\',7800);\");
  24. stat.executeUpdate(\"insert into tbl1 values(\'WangWu\',5800);\");
  25. stat.executeUpdate(\"insert into tbl1 values(\'ZhaoLiu\',9100);\");
  26. ResultSet rs = stat.executeQuery(\"select * from tbl1;\"); // 查询数据
  27. System.out.println(\"创建表结构录入数据操作演示:\");
  28. while (rs.next()) { // 将查询到的数据打印出来
  29. System.out.print(\"name = \" + rs.getString(\"name\") + \", \"); // 列属性一
  30. System.out.println(\"salary = \" + rs.getString(\"salary\")); // 列属性二
  31. }
  32. rs.close();
  33. // 3 改动表结构。加入字段 address varchar(20) default \'changsha\';
  34. stat.executeUpdate(\"alter table tbl1 add column address varchar(20) not null default \'changsha\'; \");// 创建一个表,两列
  35. stat.executeUpdate(\"insert into tbl1 values(\'HongQi\',9000,\'tianjing\');\"); // 插入数据
  36. stat.executeUpdate(\"insert into tbl1(name,salary) values(\'HongQi\',9000);\"); // 插入数据
  37. rs = stat.executeQuery(\"select * from tbl1;\"); // 查询数据
  38. System.out.println(\"表结构变更操作演示:\");
  39. while (rs.next()) { // 将查询到的数据打印出来
  40. System.out.print(\"name = \" + rs.getString(\"name\") + \", \"); // 列属性一
  41. System.out.print(\"name = \" + rs.getString(\"name\") + \", \"); // 列属性二
  42. System.out.println(\"address = \" + rs.getString(\"address\")); // 列属性三
  43. }
  44. rs.close();
  45. conn.close(); // 结束数据库的连接
  46. } catch (Exception e) {
  47. e.printStackTrace();
  48. }
  49. }
  50. }

四。调试执行:
(1),第一次调试报错例如以下:
Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)

解决方法:首先须要将sqlitejdbc-v056.jar包加入到project中:
右键你的project->Build Path->configure Build Path->Libraries->Add External JARs->
找到sqlitejdbc-v033-nested.jar包就能够了。

(2)。再执行报错例如以下:
jdbc:sqlite://E:/u/sqllite/db/powerlong_208.db
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 foo.Main.main(Main.java:41)

问题解决:是数据源的路径有问题。java不识别大写的E:盘,String sql="jdbc:sqlite://E:/tim.db";中的E:换成e:就能够调试通过了。

五,执行结果。代码类里面右键选择Run As。再选择Java Application,执行结果例如以下所看到的:
创建表结构录入数据操作演示:
name = ZhangSan, salary = 8000
name = LiSi, salary = 7800
name = WangWu, salary = 5800
name = ZhaoLiu, salary = 9100
表结构变更操作演示:
name = ZhangSan, name = ZhangSan, address = changsha
name = LiSi, name = LiSi, address = changsha
name = WangWu, name = WangWu, address = changsha
name = ZhaoLiu, name = ZhaoLiu, address = changsha
name = HongQi, name = HongQi, address = tianjing
name = HongQi, name = HongQi, address = changsha

操作界面例如以下所看到的:

六,兴许继续研究:
(1)windows下研究sqlite安装使用
(2)java代码怎样直接远程连接linux上面的sqlite库

版权声明:本文博主原创文章,博客,未经同意不得转载。

[Sqlite]--&gt;Java采用jdbc联系Sqlite各种特定的工艺数据库的数据操作的更多相关文章

  1. JAVA采用JDBC连接操作数据库详解

    JDBC连接数据库概述 一.JDBC基础知识 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供 ...

  2. java使用jdbc对sqlite 添加、删除、修改的操作

    package com.jb.jubmis.Dao.DaoImpl; import java.io.File;import java.io.FileInputStream;import java.io ...

  3. Java采用JDBC的方式连接Hive(SparkSQL)

    前两天,由于系统的架构设计的原因,想通过Java直接访问Hive数据库,对于我这个Java以及Hadoop平台的菜鸟来说,的确是困难重重,不过,还好是搞定了.感觉也不是很麻烦.这篇文章,作为一个感想记 ...

  4. Java中使用自定义类封装数组,添加类方法实现数据操作

    1.具体见注释 2.后续或有更新 public class MyArray { private long[] array; private int cnt; // 自定义数组类的元素个数 /** 使用 ...

  5. Django_重装系统后无法使用 sqlite 数据库报错:com.intellij.execution.ExecutionException: Exception in thread "main" java.lang.ClassNotFoundException: org.sqlite.JDBC

     重装系统后无法使用 sqlite 数据库报错 报错 : com.intellij.execution.ExecutionException: Exception in thread "ma ...

  6. Java中数据库连接池原理机制的详细讲解以及项目连接数据库采用JDBC常用的几种连接方式

    连接池的基本工作原理 1.基本概念及原理 由上面的分析可以看出,问题的根源就在于对数据库连接资源的低效管理.我们知道,对于共享资源,有一个很著名的设计模式:资源池(Resource Pool).该模式 ...

  7. jdbc 对sqlite的基本操作

    1.向数据库中创建表 public void addTable( String dbpath) { //创建表单的sql语句 String createtablesql= " CREATE ...

  8. 使用嵌入式关系型SQLite数据库存储数据

    除了可以使用文件或SharedPreferences存储数据,还可以选择使用SQLite数据库存储数据. 在Android平台上,集成了一个嵌入式关系型数据库—SQLite, 1.SQLite3支持 ...

  9. 去掉utf-8的Bom头:使用java以及jdbc不使用第三方库执行sql文件脚本

    package com.xxx.xxx.dao; import java.io.BufferedReader; import java.io.File; import java.io.FileInpu ...

随机推荐

  1. 高级Bash脚本编程指南(27):文本处理命令(三)

    高级Bash脚本编程指南(27):文本处理命令(三) 成于坚持,败于止步 处理文本和文本文件的命令 tr 字符转换过滤器. 必须使用引用或中括号, 这样做才是合理的. 引用可以阻止shell重新解释出 ...

  2. 如何获取ul 中li选中的值点击button按钮跳转链接

    <ul id="parent"> <li></li> <li></li> <li></li> & ...

  3. 一个网友写的栈,问为啥不能迭代。具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网

    一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网 一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器 python视频 ...

  4. 玩转Windows服务系列——服务运行、停止流程浅析

    原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...

  5. 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule

    双调欧几里得旅行商问题是一个经典动态规划问题.<算法导论(第二版)>思考题15-1和北京大学OJ2677都出现了这个题目. 旅行商问题描写叙述:平面上n个点,确定一条连接各点的最短闭合旅程 ...

  6. 一则简单演示样例看Oracle的“无私”健壮性

    Oracle的强大之处就在于他能总帮助让你选择正确的运行计划,即使你给了它错误的指示. 实验: 1. 创建測试表: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZ ...

  7. 2015年十大热门Android开源新项目

    2015年十大热门Android开源新项目 2015 即将结束,又到了大家喜闻乐见的年终盘点时刻啦,今天给大家盘点一下 2015 年 Android 开发领域新出现的 10 大热门开源项目.数据来自于 ...

  8. Twenty Newsgroups Classification任务之二seq2sparse(5)

    接上篇blog,继续分析.接下来要调用代码如下: // Should document frequency features be processed if (shouldPrune || proce ...

  9. 拿到阿里,网易游戏,腾讯,smartx的offer的过程 (转)

    前言 从今年的3月14日阿里的电话面试开始,到现在4月16日在西安悦豪酒店进行的腾讯HR面到现在一个多月了,中间先后收到了阿里,网易游戏,腾讯和smartx的offer,今天早晨刚刚接到了腾讯HR的电 ...

  10. Wix学习整理(5)——安装时填写注册表

    原文:Wix学习整理(5)--安装时填写注册表 一 Microsoft操作系统的注册表 什么是注册表? 注册表是Mircrosoft Windows中的一个重要的数据库,用于存储系统和应用程序的设置信 ...