- 浏览: 681295 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (130)
- Java (13)
- Android (9)
- J2ee (3)
- Swt/jface (0)
- SSH (9)
- C/C++ (1)
- php (1)
- Algorithm (2)
- Apache/Nginx (12)
- Bea/Tomcat (2)
- Oracle/Mysql (10)
- Sql/derby (17)
- Unix/Linux (11)
- Hadoop (1)
- Hbase (15)
- Redis (2)
- Lucene/Solr (0)
- Httpclient (1)
- Groovy (2)
- SoftwareEng (2)
- HTML/JS/CSS (3)
- Flex (1)
- log4j (1)
- Protocol (3)
- windows (0)
- Tools (1)
- docker (1)
- k8s (1)
- Business (3)
- Others (3)
最新评论
Derby版本 : db-derby-10.8.1.2
目录解析:
1) bin目录,包含了一些工具脚本和设备环境的脚本;
2) demo目录,包含了一些实例程序;
3) docs目录,包含了Derby的文档;
4) javadoc目录,包含了Derby的API文档;
5) lib目录,包含了Derby数据库的jar文件;
6) test目录,Derby的一些测试jar包;
Derby操作通过JDBC操作数据库有两种:
一种是网络模式,通过网络的链接形式(通常我们的mysql/oracle数据库,都是IP+端口),
二种是内嵌模式,即是通过文件的形式.
数据库来源:里面的数据库都是在第一篇帖子中的通过ij命令行写入的数据,这里进行的查询.
获得Derby数据库:http://db.apache.org/derby/
1. 网络模式如下代码:
package com.greatwqs.eagle; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; /** * @author greatwqs * */ public class DerbyTest { public static void main(String[] args) { DerbyTest testClient = new DerbyTest(); testClient.showTableContents(); } public void showTableContents() { try { String driver = "org.apache.derby.jdbc.ClientDriver"; Class.forName(driver).newInstance(); Connection conn = null; conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db"); Statement s = conn.createStatement(); ResultSet rs = s.executeQuery("SELECT * FROM ijtest"); while (rs.next()) { System.out.println("序号 : " + rs.getInt(1)); } rs.close(); s.close(); conn.close(); } catch (Exception e) { System.out.println("Exception: " + e); e.printStackTrace(); } } }
注意第23行的代码:
conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db");
注意:使用ip+端口的链接derby数据时,必须启动网络链接.
执行/derby_home/bin/startNetworkServer
2. 内嵌模式的JDBC查询:
测试代码如下:
package com.greatwqs.eagle.coll; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * @author greatwqs * @date 2011-8-12 */ public class DerbyTest_File { private final static String DB_URL = "jdbc:derby:D:\\Program Files\\derby\\db-derby-10.8.1.2-bin\\bin\\ij_cmd_test_db"; private final static String DERBY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver"; public static void main(String[] args) { Connection conn = null; try { Class.forName(DERBY_DRIVER); Properties properties = new Properties(); // properties.put("create", "false"); // 新建数据库 // properties.put("user", "APP"); // 用户名 // properties.put("password", "APP"); // 密码 // properties.put("retreiveMessagesFromServerOnGetMessage", "true"); conn = DriverManager.getConnection(DB_URL, properties); Statement stat = conn.createStatement(); ResultSet result = stat.executeQuery("SELECT * FROM ijtest"); while (result.next()) { System.out.println("序号 : " + result.getInt(1)); } result.close(); stat.close(); conn.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 内嵌模式数据库操作用完之后需要关闭数据库,这里没有执行数据库名称则全部关闭. try { DriverManager.getConnection("jdbc:derby:;shutdown=true"); } catch (SQLException e) { e.getMessage(); } } } }
注意里面的15行代码:
private final static String DB_URL = "jdbc:derby:D:\\Program Files\\derby\\db-derby-10.8.1.2-bin\\bin\\ij_cmd_test_db";
通过Java应用程序访问内嵌模式Derby数据库时,应用程序有责任需要在程序结束时关闭Derby数据库,如上面代码finally中的
DriverManager.getConnection("jdbc:derby:;shutdown=true");
shutdown参数用于关闭Derby数据库,如果url中指定了数据库命,则只会关闭指定的数据库,而不会关闭整个Derby数据库。数据库关闭成功时,Derby会抛出一个错误码为XJ015和一个08006的异常表示关闭成功,应用程序可以不处理这两个异常。
内嵌模式和网络模式的区别:
A. 数据库连接URL的不同;
内嵌模式是以准确地址为基准,网络模式ip+端口+数据库
B. 应用程序退出时无效关闭Derby数据库;
内嵌模式退出需要关闭数据库,网络模式Derby数据库做为一个独立运行的数据库,可以被多个应用程序所访问,所以应用程序在运行结束时不应该关闭Derby数据库。
C. 数据库驱动的不同;
内嵌模式使用org.apache.derby.jdbc.EmbeddedDriver,网络模式使用org.apache.derby.jdbc.ClientDriver
链接derby总结:
在测试的过程中需要加入驱动程序到classpath;
一般情况下驱动的jar包的路径为:\derby_home\lib
异常情况的处理:
在链接derby时不能同时链接ij和ip+端口的查询,同时链接ij和文件的jdbc查询ok.
数据库文件存放的位置:/derby_home/bin/ij_cmd_test_db
这里数据库的数据来源为上一篇中的derby的ij测试工具添加的数据.
见 : http://greatwqs.iteye.com/blog/1147397
运行上面的程序后,成功截图:
评论
错误的原因其实很简单:在使用内嵌模式时,Derby 本身并不会在一个独立的进程中,而是和应用程序一起在同一个 Java 虚拟机(JVM)里运行。因此,Derby 如同应用所使用的其它 jar 文件一样变成了应用的一部分。这就不难理解为什么在 classpath 中加入 derby 的 jar 文件,我们的示例程序就能够顺利运行了。这也说明了只有一个 JVM 能够启动数据库:而两个跑在不同 JVM 实例里的应用自然就不能够访问同一个数据库了。
DriverManager.getConnection("jdbc:derby:;shutdown=true");
关闭一个数据库:
DriverManager.getConnection("jdbc:derby:XXXDB;shutdown=true");
发表评论
-
Zz: MySQL索引背后的数据结构及算法原理
2015-08-13 14:52 684源: http://blog.codinglabs.org/ ... -
MySQL仿淘宝页面评论评分统计SQL
2013-08-07 20:51 2911假设淘宝有一张商品评论表,存储在MySQL中.表设计如下: ... -
MySQL优化
2013-08-03 11:22 1256一. MySQL服务端配置优化 1. my.ini配置优 ... -
MySQL使用单列索引和多列索引
2013-07-01 18:55 11223讨论MySQL选择索引时单列单列索引和多列索引使用,以及多 ... -
SQL 执行顺序
2012-11-08 14:43 724在查询中逻辑查询和物 ... -
Sqlserver: 使用临时表和表变量
2012-08-21 16:09 2166USE [SqlserverDBName] GO /* ... -
Sqlserver: 循环删除表数据
2012-08-15 14:07 4563USE mydatabase GO /******* ... -
SqlServer查看表/存储过程/视图定义
2012-07-20 13:42 3897SELECT definition FROM sys.sql ... -
Sqlserver 全局变量
2012-04-06 17:35 1621sql server全局变量 在SQL Server中,全局 ... -
SqlServer 游标使用规范
2012-03-21 14:46 1213定义游标时,如果不是特别需要,使用LOCAL关键显式的将游标 ... -
SQLSERVER存储过程返回游标的处理
2012-03-08 18:33 92561. 存储过程返回游标 USE [TEST_DB] G ... -
SQLSERVER存储过程用游标案例
2012-03-07 15:40 1512USE [TEST_DB] GO /****** [P ... -
SQLServer 建表 SQL 基础
2012-02-23 13:34 1246USE dbTest GO /************ ... -
Sqlserver 函数/事务/存储过程
2012-01-13 11:11 1890--聚合函数use pubsgoselect avg(dist ... -
Jdbc连接Sql Server2000/2005
2011-09-20 17:36 17611.准备工作: 准备相关的软件(Eclipse除外,开源软件可 ... -
Derby数据库的特性
2011-08-12 18:01 1490Derby的生动逼真的抚育使得它拥有一个令人惊奇的特性列表。有 ... -
Derby使用ij工具操作数据库
2011-08-12 14:40 9840解压apache的derby数据库:D:\Program Fi ...
相关推荐
derby嵌入式数据库连接问题
真正的Derby新手教程,Derby安装,创建数据库,在Java程序中使用Derby 本人原创
Derby数据库完整压缩包,解压缩即可使用,bat文件在bin文件目录下,驱动程序在lib目录下。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在应用程序中使用。...
db_derby10.10.1.1-bin.zip, windows数据库压缩包 ;
文档中简单列出了对derby数据库的几个简单的操作,包括连接derby、创建数据库、连接数据库、查询数据库等
java.lang.NoClassDefFoundError: Could not initialize class org.apache.derby.jdbc.AutoloadedDriver40 导致的原因: 在azkaban的server和executor中缺少一个叫derby.jar的包
derby数据库驱动包,java编程需要的包
derby 数据库 eclipse插件 derby 数据库 eclipse插件
Apache Derby是一个完全用java编写的数据库,Derby是一个Open source的产品,基于Apache License 2.0分发。 Apache Derby非常小巧,核心部分derby.jar只有2M,所以既可以做为单独的数据库服务器使用,也可以内嵌在...
内嵌数据库derby 10.6.2开发文档
NULL 博文链接:https://thetopofqingshan.iteye.com/blog/1504004
连接derby数据库方法—附图
上网页也可以找到一些资源关于derby数据库的安装配置,但是你看起来会很麻烦,而且比较难以上手。 这是我自己动手实践过的,里面有很多截图方便你理解安装过程,已经电脑上面环境变量的配置,在MyEclipse上面的...
各种数据库的jdbc(mysql,orcal ,derby,hive,postgresql,monetdb-jdbc)
Derby数据库初级使用文档,包括Derby数据库的安装、部署、使用等详细步骤,适合刚接触Derby人员使用。
9、运行ShowQueryDB类,你会看到对derby数据库的新增修改操作动作,其中有写入图片到数据库的语句,以及从数据库读到图片并显示出来窗体中的语句。 阅读对象:熟悉Swing编程、JDBC编程的学员。 感觉:因为derby是纯...
详细描述了derby的使用,Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。
本文档详解了java6中derby内建的Derby数据库的使用及两种不同应用下解决方案。
derby 数据库 使用的例子 derby 数据库 使用的例子