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

news2024/10/7 10:21:36

Java有一个内置的Derby数据库,是一个完全用Java语言编写的、功能强大的微型数据库,其基础引擎和内嵌的JDBC驱动总共大约2MB大小。Derby为用户提供了轻量的标准数据库引擎,它可以紧密地嵌入到任何基于Java的解决方案中。
Derby的特性令人惊奇,它可以支持关系数据库中的所有企业级的特性,包括崩溃恢复、事务回滚和提交、行/表级锁、视图、主键/外键约束、触发器、子查询表达式,等等。
Derby数据库可以有两种部署方式:
1,嵌入式:Derby数据库提供了嵌入式的JDBC驱动,因此可把Derby数据库嵌入到Java应用程序内。这种模式的Derby数据库适用于单个用户的Java应用程序,Derby和应用程序运行在同一个JVM中。
2,服务器模式:网络数据库模式,这是标准的数据库服务器(服务器/客户端)模式,是所有的数据库产品都支持的模式。

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

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

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

connect 'jdbc:derby:D:/DB/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)
) ;

从JDK1.6开始Java中就集成了Derby数据库,Derby数据库驱动类相关的jar包是derby.jar,其在JDK中的位置是db目录下的lib子目录,如(jdk后面的数字编号是版本号):“C:\Program Files(x86)\Java\jdk1.7.0_79\db\lib”。但是有的环境中确实找不到Derby数据库相关的db目录。如有需要就要单独下载。下面是我上传的一个Derby数据库JAR包资源链接:
Derby数据库JAR包derby-10.14.2.0-lib.zip
我把derby的JAR包的安装在D:\derbydb目录,其子目录lib中是数据库的jar包, 其子目录bin中有一些数据库管理工具,如 ij 工具、服务器模式所需的管理工具startNetworkServer和stopNetworkServer,如下图所示:
在这里插入图片描述
说明:
如果是Java程序中创建嵌入式Derby数据库,实际上只需要derby.jar包就可以了。

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 软件的目录。

正确设置了环境变量之后,可以运行 ij 工具运行脚本bankDB_CrtDB.sql来创建数据库。我的脚本bankDB_CrtDB.sql在D:\Temp文件夹中,因此用ij执行时命令为:run ‘D:\Temp\bankDB_CrtDB.sql’;
如下图,表示数据库和两个数据库表已创建完成,创建的数据库在D:\DB文件夹中的BankDB。两个表中的记录数为0:
在这里插入图片描述

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:.

保存后,退出系统。然后重新登录系统,设置就可生效。
再次登录linux系统,运行建表脚本bankDB_CrtDB.sql就可创建数据库。

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数据库,必须部署derby的JAR包。我把derby的JAR包部署在D:\derbydb目录。其他环境变量设置参照嵌入模式。环境变量生效后,我们可以开始工作了。
第一步,先开启数据库网络服务:
在这里插入图片描述
数据库网络服务启动后,数据库服务端口是1527

第二步,用 ij 创建数据库
说明:
创建服务器模式derby数据库的“创建数据库的连接字符串”与嵌入式的不同,因此,需要更新脚本bankDB_CrtDB.sql。把第一行更新为:
connect ‘jdbc:derby://localhost:1527/D:/DB/BankDB;create=true’ ;

准备好脚本bankDB_CrtDB.sql后,可另起一个CMD窗口,运行 ij 工具运行脚本bankDB_CrtDB.sql来创建数据库。
我的脚本bankDB_CrtDB.sql在D:\Temp文件夹中,因此用ij执行时命令为:
run ‘D:\Temp\bankDB_CrtDB.sql’;
如下图,表示数据库和两个数据库表已创建完成,创建的数据库在D:\DB文件夹中的BankDB。两个表中的记录数为0:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu20.04离线安装dpkg

方法一:百度云盘下载离线安装包 链接:https://pan.baidu.com/s/1L7TaFwE35bMfOJbXmJcWwQ 提取码:mjsm --来自百度网盘超级会员V4的分享 方法二:找一台联网计算机,自行下载离线安装包。 1. 创建存放离线包文件夹 …

测试行业,你的未来路在何方?失业之外,暗藏的这个危机更可怕!

目前测试行业现状 近期飞书的大规模裁员,无疑为2024年伊始蒙上了一层阴影。再加上“共享员工”模式的兴起,对于身处互联网行业的从业者来说,无疑是雪上加霜。 此外,延续了2023年的情况,在求职平台如BOSS直聘上&#…

Harbor本地仓库搭建004_Harbor配置管理功能_分布式分发功能_仓库管理_用户管理_垃圾清理_审查服务_项目定额---分布式云原生部署架构搭建00

然后我们再看一下配置管理,这里主要有个认证模式 这里我们是数据库,其实就是我们安装的postgresql 可以看到还有LDAP对吧,这个其实就是自己公司如果有 LDAP服务器,那么可以对接过来,那么,这个时候 再登录harbor的时候,就可以直接使用公司的,LDAP来管理,所有的用户了,其实就是…

Pycharm 启动 Django项目 —— python篇

1、打开你的工程,在菜单栏里找到Run-->Edit Configurations 2、在打开的对话框里边选择Python,点击号 3.选择Python 4.出现了一个新的项Unnamed,你可以把它改名叫debug,好听一点 5.脚本选择你网站的manage.py,脚本参…

学习C++,这几个练手项目值得推荐

写项目是学习C的一种有效方式,有以下几个原因: 实践应用:通过写项目,你可以将所学的理论知识应用到实际中,加深对C语言和编程概念的理解。这有助于巩固你的知识,并提高你的编码能力。锻炼技能:…

LabVIEW与PLC通讯方式及比较

LabVIEW与PLC之间的通讯方式多样,包括使用MODBUS协议、OPC(OLE for Process Control)、Ethernet/IP以及串口通讯等。这些通讯方式各有特点,选择合适的通讯方式可以提高系统的效率和稳定性。以下将详细介绍每种通讯方式的特点、优点…

网络协议TCP/IP, HTTP/HTTPS介绍

TCP/IP协议 TCP/IP是一种基于连接的通信协议,它是互联网的基础协议。TCP代表传输控制协议,IP代表Internet协议。虽然这两个协议通常一起提及,但它们实际上是分开的:IP负责在网络中从一台计算机向另一台计算机发送数据包&#xff0…

STM32定时器入门篇——(基本定时器的使用)

一、基本定时器的功能介绍: STM32F103的基本定时器有:TIM6、TIM7。基本定时器TIM6和TIM7各包含一个16位递增自动装载计数器,最大计数到2^16也就是65536,计数值为0~65535,其拥有的功能有:定时中断、主模式触…

星戈瑞CY5-DBCO在纳米粒子载体标记与追踪中的应用

随着纳米技术的飞速发展,纳米粒子载体在生物医学领域的应用增多。这些载体能够递送药物、基因和其他生物活性分子到特定的细胞或组织。为了有效监测纳米粒子载体在体内的分布、行为以及与生物分子的相互作用,荧光标记技术成为了一个常见工具。其中&#…

HttpServletRequest・getContentLeng・getContentType区别

getContentLength(): 获取客户端发送到服务器的HTTP请求主体内容的字节数(长度) 如果请求没有正文内容(如GET),或者请求头中没有包含Content-Length字段,则该方法返回 -1 getContentType()&am…

算法与数据结构面试宝典——迭代与递归详解与示例(C#,C++)

文章目录 一、迭代与递归简介迭代递归 二、迭代与递归的应用场景迭代递归 三、迭代与递归的优缺点迭代优缺点递归优缺点 四、迭代与递归的示例及面试策略示例1:斐波那契数列(迭代实现)示例2:快速排序(递归实现&#xf…

vue3+ts:监听dom宽高变化函数

一、效果展示 二、代码 getSize.ts import { ref, Ref, watchEffect } from "vue";export const getWidth (domRef: Ref<HTMLElement | null>) > {const width ref<number>(0);const height ref<number>(0);const observer new ResizeObs…

【机器学习】——【线性回归模型】——详细【学习路线】

目录 1. 引言 2. 线性回归理论基础 2.1 线性模型概述 2.2 最小二乘法 3. 数学基础 3.1 矩阵运算 3.2 微积分 3.3 统计学 4. 实现与应用 4.1 使用Scikit-learn实现线性回归 4.2 模型评估 5. 深入理解 5.1 多元线性回归 5.2 特征选择 5.3 理解模型内部 6. 实战与项…

⭐最新版!SpringBoot正确集成PageHelper姿势,不再被误导!

GGBond&#x1f508; CSDN的朋友们大家好哇&#xff0c;我是新来的Java练习生 CodeCodeBond&#xff01; 什么是PageHelper&#xff1f; 这里给不知道的人儿说明一下~~ 知道的xdm可以跳过了&#xff01; PageHelper顾名思义是一个 页面 帮手。也就是分页查询的一个好用的工具…

Linux 标准IO的fopen和fclose

getchar(),putchar() ‐‐‐‐ 一个字符 gets(buf),puts(buf) ‐‐‐‐ 一串字符 scanf(),printf() ‐‐‐‐ 一个字符&#xff0c;一串字符都可以 fopen函数的形式 FILE * fopen(constchar *path , cost char *mode) /* * description : 打开一个文件 * param ‐ path…

C++ 模板:全特化和偏特化

目录 全特化&#xff08;Full Specialization&#xff09; 偏特化&#xff08;Partial Specialization&#xff09; 特点和使用场景 注意事项 在C中&#xff0c;模板特化&#xff08;template specialization&#xff09;是一种强大的功能&#xff0c;允许对模板进行特定情…

S-Clustr(影子集群)V3 高并发,去中心化,多节点控制

S-Clustr 项目地址:https://github.com/MartinxMax/S-Clustr/releases/tag/S-Clustr-V3.0 Maptnh Не ограничивайте свои действия виртуальным миром. GitHub: Maptnh Jay Steinberg Man kann die Menschen, die man hasst, in d…

基于SSM+VUE的网上订餐系统(带1w+文档)

基于SSMVUE的网上订餐系统(带1w文档) 网上订餐系统的数据库里面存储的各种动态信息&#xff0c;也为上层管理人员作出重大决策提供了大量的事实依据。总之&#xff0c;网上订餐系统是一款可以真正提升管理者的办公效率的软件系统。 项目简介 基于SSMVUE的网上订餐系统(带1w文档…

绝望中迎来曙光,阿里大模型算法岗 Offer 突然来了!

节前&#xff0c;我们组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。 针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。 总结链接如…

web前端——CSS

目录 一、css概述 二、基本语法 1.行内样式表 2.内嵌样式表 3.外部样式表 4.三者对比 三、选择器 1.常用的选择器 2. 选择器优先级 3.由高到低优先级排序 四、文本,背景,列表,伪类,透明 1.文本 2.背景 3.列表 4.伪类 5.透明 五、块级,行级,行级块标签, dis…