【数据库编程】Derby数据库的部署与验证【用 ij 工具创建数据库】【一】

【数据库编程】Derby数据库的部署与验证【用 ij 工具创建数据库】【一】Java 有一个内置的 Derby 数据库 是一个完全用 Java 语言编写的 功能强大的微型数据库 其基础引擎和内嵌的 JDBC 驱动总共大约 2MB 大小

大家好,欢迎来到IT知识分享网。

用 Apache Derby 的数据库工具 ij 创建数据库环境
在使用数据库之前,必须先进行数据库部署。
建表实例,假如有需求要处理银行账户,有二个建表的需求,如下所示:
在这里插入图片描述
在这里插入图片描述



  1. 嵌入式Derby数据库的部署

如果是 Microsoft Windows® 系统,我们要把数据库创建在D:/DB/embed/BankDB目录。我们可以编写一个创建数据库这二张表的SQL脚本,bankDB_CrtDBemb.sql如下:

connect 'jdbc:derby:D:/DB/embed/BankDB;create=true' ; --创建数据库的连接字符串 -- 创建银行账户余额表 CREATE TABLE bank.actsBalance ( cardNumber VARCHAR(19) PRIMARY KEY, actBalance DECIMAL(10,2) check(actBalance>=0), tradeDate TIMESTAMP ) ; -- 创建银行账户明细表 CREATE TABLE bank.actsDetail ( cardNumber VARCHAR(19) NOT NULL, deposit DECIMAL(10,2) check(deposit>=0), withdraw DECIMAL(10,2) check(withdraw>=0), tradeDate TIMESTAMP, FOREIGN KEY (cardNumber) REFERENCES bank.actsBalance(cardNumber) ) ; 

Derby数据库JAR包的安装
我把derby的JAR包的安装在D:\derbydb目录,
在这里插入图片描述

Microsoft Windows® 系统中创建嵌入式Derby数据库
如果是 Microsoft Windows® 系统,先要正确设置 DERBY_INSTALL 和 CLASSPATH 环境变量。

可用“记事本”创建一个批处理文件如setDerby.bat,脚本命令如下:

set DERBY_INSTALL=D:\derbydb set CLASSPATH=%DERBY_INSTALL%/lib/derby.jar set CLASSPATH=%CLASSPATH%;%DERBY_INSTALL%/lib/derbytools.jar;. 

可以在 Microsoft Windows® 系统上“以管理员身份运行”运行CMD命令行提示符窗口,执行批处理文件setDerby.bat,设置就可生效。

注意:无论是 Windows ®还是 UNIX® 脚本文件,一定要确保正确指定安装 Derby 软件的目录。

linux系统中创建嵌入式Derby数据库
linux系统使用Derby 数据库部署包中的交互工具 ij 部署数据库服务器

如果是linux系统就必须正确设置 DERBY_INSTALL 和 CLASSPATH 环境变量。可用 vi 编辑器,将相关的 Java Archive (JAR) 文件的安装路径添加到 shell 初始化文件(比如 .bashrc 文件)中的 CLASSPATH 中,如下所示:

export DERBY_INSTALL='/opt/Apache/db-derby-10.1.2.1-bin' export CLASSPATH=$DERBY_INSTALL/lib/derby.jar export CLASSPATH=$CLASSPATH:$DERBY_INSTALL/lib/derbytools.jar:. 
dB$ echo $CLASSPATH /opt/Apache/db-derby-10.1.2.1-bin/lib/derby.jar: /opt/Apache/db-derby-10.1.2.1-bin/lib/derbytools.jar:. dB$ mkdir derbyWork dB$ cd derbyWork dB$ java org.apache.derby.tools.ij ij version 10.1 ij> run bankDB_CrtDB.sql ij> exit ; rb$ ls -l 

说明:
linux系统中由于手边没有环境,没有实测。

  1. 服务器模式Derby数据库的部署

Microsoft Windows® 系统中创建服务器模式Derby数据库

  • 为嵌入式的Derby数据库插入数据记录
    先创建一个导入脚本 InsertDatasForEmb.sql 如下:
--脚本 InsertDatasForEmb.sql connect 'jdbc:derby:D:/DB/embed/BankDB' ; --连接数据库 INSERT INTO bank.actsBalance(cardNumber, actBalance, tradeDate) VALUES ('',156.00,'2020-01-12 08:56:30'), ('81238',5680.00,'2020-01-13 08:16:26'), ('68866',0.00,'2020-01-14 12:20:16'); 
  • 为服务器模式的Derby数据库插入数据记录
    为服务器模式的数据库插入同样的记录时,脚本中数据库连接字符串需要更新为:
    connect ‘jdbc:derby://localhost:1527/D:/DB/BankDB’ ; –连接数据库

脚本内容更新后,另存为 InsertDatas.sql ,其文件内容如下:

--脚本InsertDatas.sql connect 'jdbc:derby://localhost:1527/D:/DB/BankDB' ; --连接数据库 INSERT INTO bank.actsBalance(cardNumber, actBalance, tradeDate) VALUES ('',156.00,'2020-01-12 08:56:30'), ('81238',5680.00,'2020-01-13 08:16:26'), ('68866',0.00,'2020-01-14 12:20:16'); 

查询数据库中的数据记录
在Eclipse开发平台查询数据库表记录
准备工作
需要在Eclipse平台配置构建路径如下图所示(你的也类似)。图中第一行derby.jar包含嵌入式驱动程序;图中第二行derbyclient.jar是服务器模式所需求的客户端驱动程序。
在这里插入图片描述



  • 服务器模式的Derby数据库中查询
    以下是查询的程序例程源码,用于查询插入在数据库表中的记录信息:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryBalance { 
    static final String driver = "org.apache.derby.jdbc.ClientDriver"; static final String dbName = "//localhost:1527/D:/DB/BankDB"; static final String dbProtocol="jdbc:derby:"; //数据库协议 /*查询账户余额表*/ private static final String QueryBalanceSQL = "SELECT * FROM bank.actsBalance " + "WHERE 1=1"; public static void main(String[] args) { 
    String url = dbProtocol + dbName; boolean rnflg = false ; try{ 
    Class.forName(driver) ; //加载驱动程序 Connection con = DriverManager.getConnection( url ); //连接数据库 try (Statement stmt = con.createStatement() ) { 
    //自动关闭资源try语句 stmt.execute(QueryBalanceSQL) ; ResultSet rs = stmt.getResultSet(); while(rs.next()) { 
    System.out.print("cardNumber: " + rs.getString("cardNumber")) ; System.out.print("\tactBalance: " + rs.getBigDecimal("actBalance")) ; System.out.println("\ttradeDate: " + rs.getTimestamp("tradeDate") ); } }catch (SQLException se) { 
    se.printStackTrace() ; } } catch (SQLException se) { 
    se.printStackTrace() ; }catch(ClassNotFoundException e){ 
    System.err.println("JDBC Driver " + driver + " not found in CLASSPATH") ; } } } 
  • 嵌入式模式的Derby数据库中查询
    嵌入式的查询源代码几乎可复用前面的服务器模式的查询程序。
    只需要修改二行代码(注释掉的是服务器模式代码):
    //static final String driver = “org.apache.derby.jdbc.ClientDriver”;
    static final String driver = “org.apache.derby.jdbc.EmbeddedDriver” ;
    //static final String dbName = “//localhost:1527/D:/DB/BankDB”;
    static final String dbName = “D:/DB/embed/BankDB”;





注意事项:
嵌入式数据库查询时,如果你是通过 ij 工具创建数据库的,务必要退出CMD窗口中的 ij 工具。或者直接退出CMD窗口。因为嵌入式访问数据库只能是单用户单JVM的。若不退出 ij ,查询时因为数据库被锁住,将产生例外。

以下是嵌入式的查询程序例程源码:

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryBalance { 
    //static final String driver = "org.apache.derby.jdbc.ClientDriver"; static final String driver = "org.apache.derby.jdbc.EmbeddedDriver" ; //static final String dbName = "//localhost:1527/D:/DB/BankDB"; static final String dbName = "D:/DB/embed/BankDB"; static final String dbProtocol="jdbc:derby:"; //数据库协议 /*查询账户余额表*/ private static final String QueryBalanceSQL = "SELECT * FROM bank.actsBalance " + "WHERE 1=1"; public static void main(String[] args) { 
    String url = dbProtocol + dbName; boolean rnflg = false ; try{ 
    Class.forName(driver) ; //加载驱动程序 Connection con = DriverManager.getConnection( url ); //连接数据库 try (Statement stmt = con.createStatement() ) { 
    //自动关闭资源try语句 stmt.execute(QueryBalanceSQL) ; ResultSet rs = stmt.getResultSet(); while(rs.next()) { 
    System.out.print("cardNumber: " + rs.getString("cardNumber")) ; System.out.print("\tactBalance: " + rs.getBigDecimal("actBalance")) ; System.out.println("\ttradeDate: " + rs.getTimestamp("tradeDate") ); } }catch (SQLException se) { 
    se.printStackTrace() ; } } catch (SQLException se) { 
    se.printStackTrace() ; }catch(ClassNotFoundException e){ 
    System.err.println("JDBC Driver " + driver + " not found in CLASSPATH") ; } } } 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118862.html

(0)
上一篇 2025-11-09 21:26
下一篇 2025-11-09 21:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信