db2存储过程调用java_db2使用Java存储过程实现MD5函数
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函数相关推荐
- oracle存储过程调用sql文件,oracle存储过程的sql调用
因为做项目的测试,所有需要不断的在数据库手工添加数据,这时候如果是批量的插入测试数据,很多情况下要用到存储过程. 如下,是Oracle数据库下一个简单的插入数据的存储过程: create or rep ...
- linux用call调存储过程,存储过程调用其他模式的存储过程需要注意的地方
我在fzfw用户下用dbms_job包自动调度了其他2个模式下的存储过程的执行.fzfw是DBA用户.告警日志报错: Sun Aug 8 00:00:02 2010 Errors in file / ...
- oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...
java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...
- java 存储过程_Java 调用存储过程
本文阐述了怎么使用DBMS存储过程.我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet.本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是 ...
- Java存储过程调用CallableStatement
什么是存储过程? 一个存储过程是一个可编程的函数,它在数据库中创建并保存.它可以有SQL语句和一些特殊的控制结构组成.当希望在不同的应用程序或平台上执行相同的函数,或者封装特定功能时,存储过程是非常有 ...
- Java调用SQL Server的存储过程详解
本文较长,包含了如下几部分 使用不带参数的存储过程 使用带有输入参数的存储过程 使用带有输出参数的存储过程 使用带有返回状态的存储过程 使用带有更新计数的存储过程 1使用不带参数的存储过程 使用 JD ...
- java 存储过程 数组_Java调用存储过程返回数组
Java调用存储过程: 结合SQL操作与存储过程 create procedure set_death_age(poet VARCHAR2, poet_age NUMBER) poet_id NUMB ...
- java 创建存储过程_如何在pl/sql中创建及调用JAVA存储过程 | 学步园
1.创建一个java存储过程helloworld create or replace and compile java source named helloworld as public class ...
- java调用数据库存储过程_Java调用SQL Server的存储过程详解
1使用不带参数的存储过程 1 {call procedure-name} 作为实例,在 SQL Server 2005 AdventureWorks 示例数据库中创建以下存储过程: CREATE PR ...
最新文章
- 会员管理scrm系统精细化运营更好促进成交
- 关于JAP FetchType.LAZY(hibernate实现)的理解
- 使用keras进行深度学习_如何在Keras中通过深度学习对蝴蝶进行分类
- python 打开exe获取窗口句柄_使用Python快速启动多个PC客户端
- 文件上传------c#
- linux vim与less区别,linux中cat、more、less命令区别详解##less 最合适最好用,和vim一样好用...
- Unity 用ml-agents机器学习造个游戏AI吧(1)(Windows环境配置)
- 2021最新!某盘加速下载工具复活了,无需登录,打开即可高速下载(附下载)!
- 12306 外包给阿里巴巴、IBM 等大企业做是否可行?
- python输入学生姓名_python学生信息管理系统实现代码
- win10开机无法自动修复此计算机,win10无限自动修复无法开机怎么办_win10开机自动修复失败如何解决...
- ..\OBJ\Template.axf: Error: L6218E: Undefined symbol FSMC_NORSRAMCmd (referred from lcd.o).
- 数据结构课程设计(学生成绩管理系统)
- java多线程和锁,自用,长文
- 15个在线检测网站工具十分好用
- 从小康到极狐,华为的“造好车”答卷,你准备打几分?
- 手机: 1581 0812 176
- EasyDSS视频点播服务器软件实现的多码率视频转码点播功能原理的说明
- 利用LSTM进行空气指数预测
- 蝉知企业门户系统 6.2 发布,新增随机区块的功能
热门文章
- 处理中文乱码_浅入深出:一次提问引发的深思,从此再也不怕“乱码”问题
- java实验泛型与容器总结_【Java心得总结三】Java泛型上——初识泛型
- 基于javaweb+jsp+mysql的高校家教管理系统
- 基于JAVA+Servlet+JSP+MYSQL的物流管理系统
- 负数、原码、反码、补码
- PHP中多维数组var_dump展示不全
- 源代码 到 可执行程序的过程
- 【Tomcat源码学习】-2.容器管理
- 每日记载内容总结39
- 分形之希尔伯特-皮亚诺(Hilbert-Peano)曲线