快速业务通道

在Eclipse中开发Apache Derby应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
令:

清单 8. 在 Derby 中创建 Java 函数

connect ''jdbc:derby:net://localhost:1527/bookstoredb   :user=bookstore;password=aaa;retrieveMessagesFromServerOnGetMessage=true;''; create function updateQuantity(id int, title varchar(128), author varchar(128),   oldQuantity int, newQuantity int) returns int PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA  EXTERNAL NAME ''bookstoreapp.serverside.DerbyFunctions.updateQuantity'';

Derby 函数的创建应该可以成功,但有时候我们很难一开始就能保证语句完全正确。下面是可能发生的一些常见错误:

ERROR 42962: Long column type column or parameter ''I'' not permitted in declared global temporary tables or procedure definitions. 如果使用一种不受支持的参数类型声明一个 Derby 过程,就会发生这种错误。

ERROR 42X50: No method was found to be able to match method call pack.A.p(int), even tried all combinations of object and primitive types and any possible type conversion for any parameters the method call may have. It may be that the method exists, but it is not public and/or static, or that the parameter types are not method invocation convertible. 当调用一个过程/函数时,如果 Derby 不能找到与过程/函数声明相匹配的 Java 方法,就会发生这种错误。错误消息给出了不能找到的 Java 方法的标签。

请注意,如果更改了方法的 Java 代码,那么就需要停止并重新启动 Derby 网络服务器,以便数据库引擎的类装载器装载新的代码。

成功地创建了 Derby 例程之后,就可以通过 ij 命令行调用这个例程,以便对其进行测试。可以通过使用 CALL 语句来调用 derby 过程,但在这里因为需要测试一个函数,因此发出以下命令:

清单 9. 调用 Derby 中的 Java 方法

values(updateQuantity(1, ''title'', ''author'', 5, 15));

IJ 显示返回值,在这里,这个返回值为 1,因为数量到达了上界。由于这个 Java 方法是在 Derby 服务器 JVM 中运行的,因此调试消息将被输出到服务器的标准输出中。使用 eclipse 控制台视图切换到 Derby 网络服务器控制台,您应该可以看到一条 Sending email... 消息。

还可以尝试使用以下代码从 JDBC 应用程序中调用 Derby 函数:

清单 10. 从客户机应用程序中调用 Java 方法

stmt.executeQuery("values(updateQuantity(1, ''title'', ''author'', 5, 15)); ");

结果应该与前面测试中的结果一致。

从 Derby 触发器中调用函数

本节最后一步是配置 Derby,以便每次更新某种书籍的数量时,调用之前定义的函数。这可以用一个触发器来实现。

derby 触发器包含关于要执行的动作以及何时执行动作的信息。

表 6. CREATE TRIGGER 语句的子句

INSERT、DELETE 或 UPDATE UPDATE
REFERENCING 子句 OLD AS OLD, NEW AS NEW。为了调用那个函数,需要能够引用旧的和新的数量
FOR EACH 子句 FOR EACH ROW。即使有多行被更新,对函数的调用也是逐行进行的
动作 update books set status = updateQuantity(…) where id = NEW.id;

在Eclipse中开发Apache Derby应用程序(11)

时间:2011-02-16 IBM Gilles Roux

下面是在 ij 中发出的用于创建触发器的语句:

清单 11. CREATE TRIGGER 语句

create trigger updateQuantityTrig after update of quantity on books

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号