打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Derby通过JDBC操作数据库(两种)
userphoto

2017.02.20

关注

Derby版本 :   db-derby-10.8.1.2

目录解析:

1 bin目录,包含了一些工具脚本和设备环境的脚本;

2 demo目录,包含了一些实例程序;

3 docs目录,包含了Derby的文档;

4 javadoc目录,包含了DerbyAPI文档;

5 lib目录,包含了Derby数据库的jar文件;

6 test目录,Derby的一些测试jar包;

 

 

Derby操作通过JDBC操作数据库有两种:

 

一种是网络模式,通过网络的链接形式(通常我们的mysql/oracle数据库,都是IP+端口),

二种是内嵌模式,即是通过文件的形式.

 

数据库来源:里面的数据库都是在第一篇帖子中的通过ij命令行写入的数据,这里进行的查询.

获得Derby数据库:http://db.apache.org/derby/

 

1. 网络模式如下代码:

 

Java代码  
  1. package com.greatwqs.eagle;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.Statement;  
  7. /** 
  8.  * @author greatwqs 
  9.  * 
  10.  */  
  11. public class DerbyTest {  
  12.   
  13.     public static void main(String[] args) {  
  14.         DerbyTest testClient = new DerbyTest();  
  15.         testClient.showTableContents();  
  16.     }  
  17.   
  18.     public void showTableContents() {  
  19.         try {  
  20.             String driver = "org.apache.derby.jdbc.ClientDriver";  
  21.             Class.forName(driver).newInstance();  
  22.             Connection conn = null;  
  23.             conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db");  
  24.             Statement s = conn.createStatement();  
  25.             ResultSet rs = s.executeQuery("SELECT * FROM ijtest");  
  26.             while (rs.next()) {  
  27.                 System.out.println("序号 : " + rs.getInt(1));  
  28.             }  
  29.             rs.close();  
  30.             s.close();  
  31.             conn.close();  
  32.         } catch (Exception e) {  
  33.             System.out.println("Exception: " + e);  
  34.             e.printStackTrace();  
  35.         }  
  36.     }  
  37.   
  38. }  

 

 

注意第23行的代码:

 

Java代码  
  1. conn = DriverManager.getConnection("jdbc:derby://localhost:1527/ij_cmd_test_db");  

 

注意:使用ip+端口的链接derby数据时,必须启动网络链接.

执行/derby_home/bin/startNetworkServer

 

 

2. 内嵌模式的JDBC查询:

 

测试代码如下:

 

Java代码  
  1. package com.greatwqs.eagle.coll;  
  2.   
  3. import java.sql.Connection;  
  4. import java.sql.DriverManager;  
  5. import java.sql.ResultSet;  
  6. import java.sql.SQLException;  
  7. import java.sql.Statement;  
  8. import java.util.Properties;  
  9.   
  10. /** 
  11.  * @author greatwqs 
  12.  * @date 2011-8-12 
  13.  */  
  14. public class DerbyTest_File {  
  15.   
  16.     private final static String DB_URL = "jdbc:derby:D:\\Program Files\\derby\\db-derby-10.8.1.2-bin\\bin\\ij_cmd_test_db";  
  17.     private final static String DERBY_DRIVER = "org.apache.derby.jdbc.EmbeddedDriver";  
  18.   
  19.     public static void main(String[] args) {  
  20.         Connection conn = null;  
  21.         try {  
  22.             Class.forName(DERBY_DRIVER);  
  23.             Properties properties = new Properties();  
  24.             // properties.put("create", "false"); // 新建数据库  
  25.             // properties.put("user", "APP");     // 用户名  
  26.             // properties.put("password", "APP"); // 密码  
  27.   
  28.             // properties.put("retreiveMessagesFromServerOnGetMessage", "true");  
  29.             conn = DriverManager.getConnection(DB_URL, properties);  
  30.   
  31.             Statement stat = conn.createStatement();  
  32.             ResultSet result = stat.executeQuery("SELECT * FROM ijtest");  
  33.   
  34.             while (result.next()) {  
  35.                 System.out.println("序号 : " + result.getInt(1));  
  36.             }  
  37.             result.close();  
  38.             stat.close();  
  39.             conn.close();  
  40.         } catch (ClassNotFoundException e) {  
  41.             e.printStackTrace();  
  42.         } catch (SQLException e) {  
  43.             e.printStackTrace();  
  44.         } finally {  
  45.             // 内嵌模式数据库操作用完之后需要关闭数据库,这里没有执行数据库名称则全部关闭.  
  46.             try {  
  47.                 DriverManager.getConnection("jdbc:derby:;shutdown=true");  
  48.             } catch (SQLException e) {  
  49.                 e.getMessage();  
  50.             }  
  51.         }  
  52.     }  
  53. }  

 

 

注意里面的15行代码:

 

Java代码  
  1. 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

 

 

 

 

运行上面的程序后,成功截图:


 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Java SE 6 新特性: Java DB 和 JDBC 4.0
Derby 使用的2种方式:内嵌和独立
Cloudscape数据库的安装和了解
在 Eclipse 中开发 Apache Derby 应用程序
[转贴]Derby入门 —— (1) - 阿赖耶 - JavaEye技术网站
Derby的基本使用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服