[转贴]Derby入门 —— (2)

自动层叠删除
       现在你有超过一万条的定单数据,你需要保证这些在数据库里的数据没有被破坏。固定这些数据是毫无疑问的。
       让我举例说明一个潜在的问题,这个问题的中心是围绕在删除一个顾客后。问题就有可能会出现。
       使用标准的SQL语句,只从custs表中删除顾客信息:
delete from custs where id='838';
 
       这是从数据库中删除顾客编号为838的消费者。好极了!
       如果这是你所做的,数据库的数据正式被破坏了。为什么呢?这是因为在数据库里有10定单信息没有关联到消费者!
       这可能引起应用程序各种各样的错误。所有应用程序取得定单信息并尝试打印顾客信息时,都会涉及到这个异常。当你列出所有用户和他们的定单信息时,有些定单信息永远都不会显示出来。
       在关系数据库管理系统的条款中,数据库引用完整性是不允许这样的情况的。这是因为一条顾客记录被删除,而没有删除相应的定单信息。
       因此,我们需要这样做:
delete from custs where id='838';
delete from orders where custid='838';
 
       而且,我们需要确保两条删除命令在同一个事务中执行。要么两条语句都执行成功,要么都执行失败。
       这个称为删除层叠,因为删除顾客记录导致删除定单信息。
       Derby有能力处理引用完整性。
 
Derby触发器
       保证引用完整性的方法是定义一个触发器。一个触发器是一段代码或SQL语句,当数据发生修改或存取时,它将在数据库服务器里执行。Derby支持定义触发器(使用SQL语句或Java代码),当顾客记录被删除时,可以编码实现删除关联的定单信息。然而,在Derby里有一个更简单的方法。
       它可以告诉Derby,使用标准的SQL DDL(数据定义)语句,这涉及到orders表和custs表。你也可以告诉Derby去完成自动层叠删除。
 
添加参考约束
       要添加自动层叠删除,就要修改原始的createdb.sql里的语句。在db\ref子目录下找到createdbref.sql文件。你需要对orders表定义进行修改。添加下面兰色字体的内容:
create table orders
       (id char(8) not null,
       custid char(5) not null
       references custs (id) on delete
       cascade, total integer,
       primary key(id,custid));
       另外一个不同是连接数据库的URL值。这时,网络驱动器是指定的。一定要注意网络驱动器是需要用户名和密码的,默认的用户名和密码都是APP,所以URL值将修改为:
connect 'jdbc:derby:net://localhost/
       vsjdb:user=APP;password=APP;';
 
       你现在可以强行创建带参考约束的新表。确保复制createdbref.sql到你的工作目录。再次启动ij。现在,使用下面的命令可以删除所有记录并创建新表:
run 'createdbref.sql';
 
       在创建了表后,你可以再次运行TableFiller.java文件去在表中添加10000条定单数据。使用network子目录的修改版本。在原始的TableFiller.java里修改的部分如下面兰色字体显示的:内容:
import java.sql.*;
import java.util.Properties;
public class TableFiller {
       Connection conn = null;
       PreparedStatement insertCust
              = null;
       PreparedStatement insertOrder
              = null;
       String driverName=
              “com.ibm.db2.jcc.DB2Driver”;
       String url =
              “jdbc:derby:net://localhost/
              vsjdb:user=APP;password=APP;”;
       ...
 
       装载的驱动器将要改为网络驱动器(com.ibm.db2.jcc.DBDriver),URL值最好还是改成访问网络JDBC驱动器的值。否则,这个代码将与原始的TableFill.java文件一样。如果你要写你自己的JDBC代码,你可以设置一个string从外部文本文件里读取参数,这样你将不需要修改代码就能在嵌入式关系数据库管理系统和网络关系数据库管理系统之间转换。
 
多用户并发访问
       现在,来关注多用户连接,在另一个控制台窗口启动ij会话,并连接到服务器使用下面的命令:
connect 'jdbc:derby:net://localhost/
       vsjdb:user=APP;password=APP;';
 
       在原始的控制台窗口,编译并运行新的TableFiller.java文件。这将创建1000个顾客记录和10000条定单记录。当这些操作执行完毕后,回到新的ij窗口并使用下面的命令:
select * from custs;
…and:
select * from orders;
 
       当你执行这个命令的时候,你将发现所有用户和定单信息都已经被创建。网络服务器允许多用户并发访问数据。
 
测试层叠删除
       一旦你创建了数据记录,试着在ij里执行下面的语句:
select * from custs where id='700';
 
接着执行下面的语句:
select * from orders where
               custid='700';
 
       你将看到顾客记录和这个顾客的10条定单信息。
       现在,尝试删除顾客,使用下面的命令:
delete from custs where id='700';
 
       这将删除用户记录,层叠将会删除关联的定单信息。现在尝试再次使用上面的select语句查看,你将发现那10条定单信息也被删除了。
 
写一个Derby存储过程
       在实验的最后,你将用Java编程语言创建一个Derby存储过程。你也可以存储代码到存储过程进入Derby数据库内部,Derby能轻松的区分数据和代码。
       该存储过程将调用deleteAll(),从它的名字可以理解到,它将删除数据库里的所有记录。在stored子目录下可以找到实现该存储过程的Java代码,它的名字为CleanTables.java。代码内容如下:
import java.sql.*;
public class CleanTables {
               public static void delAll ()
                               throws SQLException {
                               Connection conn =
                               DriverManager.getConnection(
                                              "jdbc:default:connection");
                               Statement delCusts =
                                              conn.createStatement();
                               delCusts.executeUpdate(
                                              "delete from custs");
                               delCusts.close();
                               conn.close();
                               return;
               }
}
 
你可以看到,该存储程序在Java类里是一个public static的方法。JDBC连接器的内容是代码里url的值:
jdbc:default:connection
这会告诉Derby服务器提供一个默认的连接到代码。Derby将管理这些连接。实际上的语句是执行:
delete from custs;
 
       自从层叠删除生效,删除custs表的任何数据,也将删除orders表里相关联的数据。
 
在Derby数据库里存储Java代码
       要在Derby数据库里存入Java代码,你首先需要编译该代码并创建成JAR文件。编译CleanTables.java代码:
javac CleanTables.java
 
       创建JAR文件:
jar cvf vsjstproc.jar *.class
 
       或者你可以使用makejar.bat文件来完成上述操作,复制生成的vsjstporc.jar文件到工作目录。
       在工作目录,你需要设置该JAR文件到数据库中。在ij中使用下面的命令(确保你的连接会话是通过网络驱动器获得的):
call sqlj.install_jar('vsjstproc.jar',
               'APP.cleanTable', 0);
 
       这个命令实际上是调用一个存储过程,它将设置vsjstporc.jar文件到数据库并为它设置是内部名cleanTable。APP引用应用程序计划。让JAR文件在数据库里是非常方便的。当你复制数据库时,这些代码将跟着被移动。
       如果你需要从数据库里删除该JAR文件,你可以使用:
call sqlj.remove_jar(
               'APP.cleanTable', 0);
 
       在删除调用中仅仅需要内部名。
       当把JAR设置到数据库里后,当它需要读取Java代码时,你需要告诉Derby去识别该JAR文件。这些都需要通过存储过程设置一个属性:
call syscs_util.syscs_set_database_
               property('derby.database.
               classpath', 'APP.cleanTable');
 
       当装载Java类时,Derby都会查看内部的APP.cleanTable JAR文件。你最后准备定义一个名为deleteAll()的存储过程。使用下面的命令:
create procedure deleteAll() parameter
               style java language java modifies
               sql data external name
               'CleanTables.delAll';
 
       Derby将从APP.cleanTable JAR文件找到CleanTable类,并锁定该类的static delAll()方法。如果你需要删除该存储过程,你可以使用下面的命令:
drop procedure deleteAll;
 
       有了该存储过程,你可以删除这两个表的所有数据,只需要简单的在ij下调用存储过程deleteAll():
call deleteAll();
 
       在这个存储过程执行完毕后,你将发现这两个表是空的了。
 
结论
       Derby是一个具有丰富特性的关系数据库系统,并能集成到你的项目中。
       它支持嵌入式模式和客户端-服务器模式操作,它能适应部署多变的情况。它是100%用Java实现的,并与你的Java应用程序一样的享受‘随时发布’。它能快速执行和处理大量数据,同时也支持高级特性,例如引用完整性和存储项目,它以达到理想化的持久化的数据存储所必须的。最后但并不是最小,它自由的Apache许可让你自由的绑定它到你的产品中。
开源像矿山有很多隐藏的宝石一样。如果你没有再次关注Apache Derby,你将不会注意到有钻石的存在。
 
关于作者:
       Sing Li:顾问,培训师和自由作家,他专攻Java,web应用程序,分布式计算和对等技术。他的最近出版包括Early Adopter JXTA,Perfessional JINI和Professional Apache Tomcat,这些都是Wrox出版社出版
 
下载和安装Derby
       你可以在incubator area of the Apache site里找到Derby
       一旦你解压下载的Derby,注意你的解压目录,这是你的Derby安装目录。你需要使用这个目录去设置的你的classpath。
 
下载Derby JDBC的网络驱动器
       为了在网络模式下访问Derby,你将需要一个JDBC网络驱动器。IBM捐赠了这个驱动器给Derby项目,但是直到写本文时,它都不是一个标准版本。
       暂时,你将需要下载 IBM DB2 JDBC Universal driver for Apache Derby Network Server 。根据地址里的说明去设置你的 classpath 。 

Xilinx PL实现DP TX视频传输的关键配置与实战解析 本文详细解析了在Xilinx ZCU106开发板上,利用PL(可编程逻辑)实现DP TX(DisplayPort发送)视频传输的关键配置与实战流程。内容涵盖从硬件平台搭建、DP TX IP核参数(如链路速率、通道数、视频时序)的详细配置,到软件驱动初始化、中断处理及链路训练的全过程,并提供了屏幕闪烁、颜色异常等常见问题的避坑指南与调试技巧,旨在帮助开发者高效实现稳定的4K视频输出。 阅读详情

相关推荐

C++常见面试题总结

C++常见面试题总结

xu_fu_yong的专栏 8万+

无涯教程-Derby - 存储过程

本章教您如何在Derby中创建和删除存储过程。

无涯教程 376

Unity PSD分层导入插件ps2d原理与实战指南

PSD作为UI设计主流源文件,其图层结构、混合模式、文字矢量属性等核心语义在传统引擎导入中普遍丢失,导致设计还原度低、多语言适配难、运行时不可控。ps2d通过深度解析PSD二进制规范,将图层映射为GameObject树、文字转为TextMeshPro可编辑组件、形状生成矢量Mesh、蒙版与图层样式编译为定制Shader,实现设计意图的精准程序化表达。该方案显著提升UI开发效率,支撑高保真还原、动态修改、分辨率自适应及运行时热重载等工程需求,是Unity中连接设计师与程序员的关键工作流中枢。

weixin_32943857的博客 348

第二届N1CTF Web Derby wp jndi注入通过Druid绕过高版本jdk打Derby Rce

声明:本人坚决反对利用教学方法进行犯罪的行为,一切犯罪行为必将受到严惩,绿色网络需要我们共同维护。

weixin_45446164的博客 1538

部署与可视化系统:移动端跟踪系统:YOLOv8 + ByteTrack 结合 Android CameraX 实现实时行人计数 App

本文详细介绍了在Android移动端实现实时行人检测、跟踪与计数系统的完整方案。系统采用YOLOv8+ByteTrack技术栈,基于NCNN推理引擎,无需云端算力即可在手机端侧完成全流程处理。文章从技术选型、系统架构、CameraX集成等多个维度进行深入解析,重点阐述了移动端部署面临的工程挑战和优化策略。通过四层管道模型设计,实现了从图像采集到目标跟踪的高效处理流程,并采用C++ NDK开发确保性能。该系统在中端手机上可达到10FPS,旗舰机型可达30FPS,为移动端实时目标跟踪提供了可落地的解决方案。

ZXSXJ的博客 94

硬件测试有哪些?

硬件单元测试(UT)是验证电路功能与可靠性的关键环节,主要分为电源测试和信号测试两大模块。电源测试需验证输入电压范围、高低压极限、短路保护等功能,确保供电稳定性;信号测试则聚焦时钟、总线、存储等接口的时序与完整性。测试要求统一标准、可追溯数据、问题闭环处理,通过开发与测试协同确保质量。规范的单元测试能有效降低后期集成风险,提升产品可靠性,其核心始终是在最小单元上确保稳健性,为系统级可靠性奠定基础。

硬核科技 245

Derby 数据库的应用

一、Derby数据库简介 1、Derby的发展史及特性概述         Derby是一个开源的,100%由Java开发的关系数据库,随着Java平台的普及Derby也收到了 越来越多的关注。Derby的前身是美国IBM公司的ColudScape。2004年4月,IBM公司将 CloudScape的数据库捐献给了Apache软件基金会,并将其更名为Derby, 接着SUN也为Der

weiluo12的专栏 1万+

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 107

开发 Derby 存储过程

Derby 存储过程简介使用 在 J2EE 开发中 JDBC(Java Database Connectivity) 是一种常见的数据库连接方式,它为 Java 环境下的应用程序提供了简便的数据库连接,查询和操作功能:清单 1...

293

反应动力学仿真软件:CHEMKIN_(12).CHEMKIN与其他软件的接口

通过上述介绍,我们详细探讨了如何将 CHEMKIN 与 MATLAB、Python、COMSOL、Aspen Plus 和 Ansys Fluent 等软件工具进行接口配置和数据交互。这些接口不仅能够显著提升 CHEMKIN 在反应动力学仿真中的应用效果,还能充分利用其他软件工具的强大功能,实现更复杂的数据处理和分析。希望这些内容对您在化学反应动力学仿真中的工作有所帮助。

kkchenjj的博客 1139

RT-DETR改进前必看 - Ultralytics调参 1:1还原RT-DETR官方版本实验环境,更方便改进

的项目文件中集成了YOLOv3v5v6v8v9v10rt-detr11以及其中不同大小的模型结构,更方便我们学习和使用。的参数配置在路径下,其中中设置了模型在训练Train验证Val/Test预测Predict可视化Visualize导出Export超参数Hyperparameters、以及跟踪Tracker的相关参数。在调参过程中主要涉及训练Train和超参数Hyperparameters。下面主要介绍一下初始超参数Hyperparameters。

Limiiiing的博客 7968

derby常用语法

derby常用语法 以user表为例: 1.创建表   create table user (id int primary key,account varchar(5),name varchar(5),password varchar(16),role_id int(2)); 2.查看所有表   show tables; 3.删除表   drop table user; 4.查看表...

weixin_34261415的博客 357

智能车图像处理12-进阶篇4--环岛辅助判断条件

主函数: 第6行: 含义是当前需要不在坡道和车库状态 第11-12行 : 寻找一下环岛的双断点(在辅助函数中) 第16-66行: 当左右线的方差满足一边很大,一边很小时,truepianfangflag /truepianfangflagforleft 置1,在环岛的判断中使用。 辅助函数: 双断点函数(左与右相似,以做为例): 第13-28行: 第一处断点 第29-40行: 第一处断点后 连续边线 第41-52行: 第一处连续后,第二处断点 第53-64行: 第二处断点后,第二处

taiyuezyh的博客 1万+

嵌入式数据库新手指南:H2/HSQL/Derby从入门到实践

通过这个简单的通讯录项目,希望你能对H2、HSQL和Derby有更直观的认识。记住,选择合适的工具比追求"最好"的工具更重要。作为一个刚接触嵌入式数据库的开发者,面对H2、HSQL和Derby这三个常见选择时,难免会感到困惑。本文将通过一个简单的通讯录应用案例,带大家快速理解这三种数据库的区别和用法。嵌入式数据库最大的特点就是无需单独安装数据库服务器,直接嵌入到应用程序中运行。我们以一个简单的通讯录应用为例,展示三种数据库的使用方法。这样开发者可以很方便地在不同数据库间切换,观察它们的表现差异。

NightshadeEagle34的博客 664

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Derby数据库学习,derby、derby。derby入门。

derby官方下载地址:http://db.apache.org/derby/derby学习资料1:http://www.oschina.net/code/snippet_12_71derby学习资料2:http://hotpepper.javaeye.com/blog/237831以下内容来自互联网,非个人所总结。 http://jerryqiu.javaeye.com/bl

不积跬步无以至千里,不积小流无以成江海。 5276

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Derby安装与环境配置

本教程主要是Java开发工具包(JDK)和Apache Derby的安装和配置。 首先,本节描述了需要哪个JDK版本,如何配置和验证安装JDK。 接下来,展示如何安装Apache Derby,配置环境以使用Derby嵌入式JDBC驱动程序,以及如何使用Derby Sysinfo工具验证安装。

@克己 5128

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

derby入门

1,下载并安装Derby: 下载地址:http://db.apache.org/derby /derby_downloads.html,下载最新版本。 我用的是10.5.3.0。 解压缩到任意文件夹,我的是:E:\Java\Joy\derby 2,配置环境变量: 建立DERBY_HOME,值:E:\Java\Joy\derby\db- derby-10.5.3.0-bin\...

diantu8482的博客 129

Derby介绍

Introduction to DerbyWelcome to Derby!Derby is afull-featured, open source relational database management system (RDBMS) thatis based on Java™ and SQL.Derby is written and implemented co

JonnyWei的专栏 3945

Apache Derby 数据库 - 教程

阿帕奇德比。本文介绍如何安装 Apache Derby 数据库、如何启动 Derby 服务器、如何通过 Java 连接到 Derby 以及如何使用 Derby 命令行工具发出 SQL 语句。还解释了将 Apache Derby 安装为 Windows 服务。 1. 阿帕奇德比 1.1。概述 Apache Derby 是一个用 Java 编写的开源数据库。它是免费的并且性能良好。Apache Derby 在 JDK 中使用,称为 Java DB。Apache Derby 和 Java...

allway2的博客 3947

derby

derby安装及使用 文章目录一、安装第一步:下载derby bin版本(注意与自己的JDK版本匹配)第二步:将derby解压到你想要安装的路径,第三步:配置环境变量(1)配置DERBY_HOME,变量值为你安装derby的路径(2)配置Path环境变量(3)配置classpath环境变量(4)检测环境变量是否配置成功二、创建数据库1.创建并连接数据库:2.创建数据库中的表等等,语法与SQL相同三、与Java web连接流程:前提:注意:代码: 环境:windows derby 版本:db-derby-

智障儿童欢乐多 1079

derby+myBatis 入门

1, 下载derby, myBatis。 2, 设定DERBY_HOME环境变量和PATH环境变量。 3, 用ij命令执行下面的代码。 connect 'jdbc:derby:tianyuDB;create=true'; create table Person (id int primary); insert into Persion values (1); disconnect; ...

龙高大老 645

derby spring mybatis 集成

derby mybatis spring集成

自由的大月 2606

Apache Derby-01介绍DERBY

1.DERBY是什么: Apache Derby 是IBM于2004年贡献给Apache软件基金会的数据库,于2005年正式成为开源项目,Derby作为一个基于JAVA的关系型数据库框架,他拥有许多便利的地方: 1.极小的容量 2.基于标准 3.安全 4.嵌入式数据库引擎 5.网络服务器 6.纯JAVA 7.使用方便 Derby也提供了便利地工具使其能...

aoqianchan0493的博客 239

java derby 网络模式_Derby 使用的2种方式:内嵌和独立

Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。Derby数据库有两种运行模式:1) 内嵌模式。Derby数据库与应用程序共享同一个JVM,通常由应用程序负责启动和停止,对除启动它的应用程序外的其它应用程序不可见,即其它应用程序不可访问它;2) 网络...

weixin_33916124的博客 652

Java连接使用Derby

1.首先下载Derby,下载点击这里,选择自己的JDK对应的版本,我的是JDK8,下载对应版本 2.配置环境变量 DERBT_INSTALL:D:\derby\db-derby-10.14.2.0-bin (对应自己解压的位置) DERBY_HOME:D:\derby\db-derby-10.14.2.0-bin (对应自己解压的位置) CLASSPATH:;%DERBY_HOME%\lib\...

SuXing_的博客 983

Derby的安装与使用

转自 http://wenku.baidu.com/view/08096cfef705cc17552709dc.html Derby数据库是一个纯用Java实现的内存数据库,属于Apache的一个开源项目。由于是用Java实现的,所以可以在任何平台上运行;另外一个特点是体积小,免安装,只需要几个小jar包就可以运行了。 Derby数据库有两种运行模式: 1) 内嵌模式。Derby数据库与

duguduchong的专栏 5892
上一篇: [转贴]Derby入门 —— (1)
下一篇: 关于Arc2D的角度问题
JavaSxy
博客等级 码龄21年 1粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值