1.数据库版本

2.Java脚本

importjava.security.MessageDigest;importCOM.ibm.db2.app.UDF;public class MD5UDF extendsUDF {public staticString MD5(String s) {

String s1= new String("");char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9','a', 'b', 'c', 'd', 'e', 'f'};try{byte[] strTemp =s.getBytes();

MessageDigest mdTemp= MessageDigest.getInstance("MD5");

mdTemp.update(strTemp);byte[] md =mdTemp.digest();int j =md.length;char str[] = new char[j * 2];int k = 0;for (int i = 0; i < j; i++) {byte byte0 =md[i];

str[k++] = hexDigits[byte0 >>> 4 & 0xf];

str[k++] = hexDigits[byte0 & 0xf];

}

s1= newString(str);

}catch(Exception e) {

System.out.println(e.getMessage());

}return "{" + s1 + "}";

}public static voidmain(String[] args){

System.out.println(MD5("asdf"));

}

}

3.运行javac编译

javac MD5UDF.java

4.运行jar打包MD5UDF.class 为 MD5UDF.jar

jar cf MD5UDF.jar MD5UDF.class

5.连上数据库,运行安装.jar文件到数据库(C:\Documents and Settings\ALL USERS\Application Data\IBM\DB2\DB2COPY1\function\jar\ZEN 目录下)

db2 connect to sample

db2 "CALL sqlj.install_jar('file:E:\MD5UDF.jar', 'MD5UDF')"

6.登录数据库创建function

DROP FUNCTIONBI_MD5;CREATE FUNCTION BI_MD5(VARCHAR(200))RETURNS VARCHAR(70)

EXTERNAL NAME'MD5UDF:MD5UDF.MD5'FENCED VARIANT

NO SQL

EXTERNAL ACTION

LANGUAGE JAVA

PARAMETER STYLE JAVA

7.调用测试

select bi_MD5('12345') from sysibm.dual

OK!

结论:

1.安装、删除、替换jar文件

db2 "CALL sqlj.install_jar('file:D:\someBookes\Java\MD5UDF2.jar', 'BIMD5')"

db2 "CALL sqlj.remove_jar('BIMD5')"

db2 "CALL sqlj.replace_jar('file:E:\mydb2\mylog.jar', 'BIMD5')"

2.刷新已经调用的jar或class,不用重启实例就生效:

db2 "CALL SQLJ.REFRESH_CLASSES()"

3.调用的Java方式必须是静态的。

4.编译成jar包的SDK版本必须和db2的版本相符

否则会报错

db2存储过程调用java_db2使用Java存储过程实现MD5函数相关推荐

  1. oracle存储过程调用sql文件,oracle存储过程的sql调用

    因为做项目的测试,所有需要不断的在数据库手工添加数据,这时候如果是批量的插入测试数据,很多情况下要用到存储过程. 如下,是Oracle数据库下一个简单的插入数据的存储过程: create or rep ...

  2. linux用call调存储过程,存储过程调用其他模式的存储过程需要注意的地方

    我在fzfw用户下用dbms_job包自动调度了其他2个模式下的存储过程的执行.fzfw是DBA用户.告警日志报错: Sun Aug  8 00:00:02 2010 Errors in file / ...

  3. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

  4. java 存储过程_Java 调用存储过程

    本文阐述了怎么使用DBMS存储过程.我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是 ...

  5. Java存储过程调用CallableStatement

    什么是存储过程? 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有 ...

  6. Java调用SQL Server的存储过程详解

    本文较长,包含了如下几部分 使用不带参数的存储过程 使用带有输入参数的存储过程 使用带有输出参数的存储过程 使用带有返回状态的存储过程 使用带有更新计数的存储过程 1使用不带参数的存储过程 使用 JD ...

  7. java 存储过程 数组_Java调用存储过程返回数组

    Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMB ...

  8. java 创建存储过程_如何在pl/sql中创建及调用JAVA存储过程 | 学步园

    1.创建一个java存储过程helloworld create or replace and compile java source named helloworld as public class ...

  9. java调用数据库存储过程_Java调用SQL Server的存储过程详解

    1使用不带参数的存储过程 1 {call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: CREATE PR ...

最新文章

  1. 会员管理scrm系统精细化运营更好促进成交
  2. 关于JAP FetchType.LAZY(hibernate实现)的理解
  3. 使用keras进行深度学习_如何在Keras中通过深度学习对蝴蝶进行分类
  4. python 打开exe获取窗口句柄_使用Python快速启动多个PC客户端
  5. 文件上传------c#
  6. linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
  7. Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置)
  8. 2021最新!某盘加速下载工具复活了,无需登录,打开即可高速下载(附下载)!
  9. 12306 外包给阿里巴巴、IBM 等大企业做是否可行?
  10. python输入学生姓名_python学生信息管理系统实现代码
  11. win10开机无法自动修复此计算机,win10无限自动修复无法开机怎么办_win10开机自动修复失败如何解决...
  12. ..\OBJ\Template.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMCmd (referred from lcd.o).
  13. 数据结构课程设计(学生成绩管理系统)
  14. java多线程和锁,自用,长文
  15. 15个在线检测网站工具十分好用
  16. 从小康到极狐,华为的“造好车”答卷,你准备打几分?
  17. 手机: 1581 0812 176
  18. EasyDSS视频点播服务器软件实现的多码率视频转码点播功能原理的说明
  19. 利用LSTM进行空气指数预测
  20. 蝉知企业门户系统 6.2 发布,新增随机区块的功能

热门文章

  1. 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题
  2. java实验泛型与容器总结_【Java心得总结三】Java泛型上——初识泛型
  3. 基于javaweb+jsp+mysql的高校家教管理系统
  4. 基于JAVA+Servlet+JSP+MYSQL的物流管理系统
  5. 负数、原码、反码、补码
  6. PHP中多维数组var_dump展示不全
  7. 源代码 到 可执行程序的过程
  8. 【Tomcat源码学习】-2.容器管理
  9. 每日记载内容总结39
  10. 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线