db2使用Java存储过程实现MD5函数
1.数据库版本

2.Java脚本
import java.security.MessageDigest;
import COM.ibm.db2.app.UDF;
public class MD5UDF extends UDF {
public static String 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 = new String(str);
} catch (Exception e) {
System.out.println(e.getMessage());
}
return "{" + s1 + "}";
} public static void main(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 FUNCTION BI_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的版本相符
否则会报错

http://bbs.chinaunix.net/thread-966098-1-1.html
http://www.ibm.com/developerworks/cn/data/library/techarticle/dm-1012liucs/
http://www.ibm.com/developerworks/data/library/techarticle/dm-0510law/index.htmldb2使用Java存储过程实现MD5函数的更多相关文章
- java生成字符串md5函数类
import java.security.MessageDigest; /** * Md5 工具 */ public class Md5Util { private static MessageDig ...
- java生成字符串md5函数类(javaSE)
//实现生成MD5值 import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.B ...
- Atiitt 使用java语言编写sql函数或存储过程
Atiitt 使用java语言编写sql函数或存储过程 1.1. java编写sql函数或存储过程的机制1 1.2. Java编写sp的优点1 1.3. 支持java源码,class文件,blog f ...
- Oracle03——游标、异常、存储过程、存储函数、触发器和Java代码访问Oracle对象
作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7476717.html 1.游标(光标)Cursor 在写java程序中有集合的概念,那么 ...
- 存储过程 <3> 和函数的区别
二.函数和存储过程的优点: 1.共同使用的代码可以只需要被编写一次,而被需要该代码的任何应用程序调用(.net,c++,java,也可以使DLL库). 2.这种几种编写.几种维护更新.大家共享的方法, ...
- Java 自带MD5加密 Demo
package demo; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; pub ...
- mysql存储过程及常用函数
原文:mysql存储过程及常用函数 一.函数 1.数学函数 CEIL()进一取整 SELECT CEIL(1.2);2 FLOOR()舍一取整 SELECT FLOOR(1.9);9 MOD取余数(取 ...
- Oracle-4 - :超级适合初学者的入门级笔记:plsql,基本语法,记录类型,循环,游标,异常处理,存储过程,存储函数,触发器
初学者可以从查询到现在的pl/sql的内容都可以在我这里的笔记中找到,希望能帮到大家,视频资源在 资源, 我自己的全套笔记在 笔记 在pl/sql中可以继续使用的sql关键字有:update del ...
- Oracle存储过程和自定义函数
新博客文章链接,欢迎大家评论探讨 概述 存储过程和存储函数是指存储在数据库中供所有用户程序调用的子程序叫存储过程.存储函数. 异同点: 存储过程和存储函数的相同点:完成特定功能的程序. 存储过程和存储 ...
随机推荐
- JMeter 学习笔记从不懂慢慢提升(01)
开源已经成为一个趋势,虽然说做测试是一个低端的行业,但是我们也应该在这个低端的行业慢慢提升自己,让自己到达理想的高度. 以前说如果你会使用loadrunner可能别人就会觉得你有一定的水平那么就会拿高 ...
- Debian 7 安装 Emacs 24.4
一. 安装依赖包 sudo apt-get build-dep emacs23 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 正在读取状态信息... 完成 下列软件包将被[卸载]: li ...
- 总结nonatomic,assigncopy,retain
nonatomic:非原子性访问,不加同步,多线程并发访问会提高性能.如果不加此属性,则默认是两个访问方法都为原子型事务访问. (atomic是Objc使用的一种线程保护技术,基本上来讲,是防止在写未 ...
- CSS设置行内元素和块级元素的水平居中、垂直居中
CSS设置行内元素的水平居中 div{text-align:center} /*DIV内的行内元素均会水平居中*/ CSS设置行内元素的垂直居中 div{height:30px; line-heigh ...
- myeclipse自带客户端连接mysql数据库
一:开启mysql服务器 开始——服务 二:打开myeclipse数据库连接视图 找到DB Browser, 三:新建一个连接 如图: 四:填写相关连接参数,并添加jar包驱动 五:然后一路next, ...
- HTTP重定向服务器
程序基本流程如下: 代码组织结构如下: HTTP重定向服务主线程: package com.server; import java.io.IOException; import java.net.Se ...
- 练习题之ExChange
两个线程可以交换对象的同步点.每个线程都在进入exChange方法时给出某个对象,并接受其他线程返回时给出的对象.用于实现两个人之间的数据交换,每个人在完成一定的事务后想与对方交换数据,第一个先拿出数 ...
- 极其简单的使用基于gulp和sass前端工作流
简单的记录自己如何在实际工作中使用gulp和sass的.我的原则是,小而美! gulp与sass介绍 gulp 什么是gulp?和Grunt一样,是一种任务管理工具:和Grunt又不一样,gulp是一 ...
- WP8.1 RSA 加解密实例(导入公钥私钥)
因项目上需要用到,之前在WP8.0的环境上调试通过,现在在开发8.1时发现已不支持原来的加密库,所以无法使用以前的方法,不得已,去寻找windows命名空间下RSA的加解密方法,经过几天的尝试,将解决 ...
- MVC5----用户登陆及验证码
随便写写记录一下学习的过程 登陆 Models中添加添加 public class LoginViewModel { [Required(ErrorMessage = "*")] ...