金融其它

DB2 调用java自定义方法报错

本人用java 写了个DES的加密类

想在DB2里面调用然后将数据值加密

将DES。class已经拷贝到IBMSQLLIBFUNCTION目录下后

create function encrypt_des(str varchar(100))
returns varchar(100)
fenced
variant
no sql
language java
PARAMETER STYLE java
external name 'DES!encrypt';
用一下脚本创建函数成功

在测试的时候 values(encrypt_des('123'));
报错如下
[Error Code: -4306, SQL State: 42724] DB2 SQL Error: SQLCODE=-4306, SQLSTATE=42724, SQLERRMC=DB2ADMIN.ENCRYPT_DES;SQL120822162338500;encrypt;(Ljava/lang/String;)Lj, DRIVER=3.50.152

这里网上的资料很少,请知道的大牛帮忙解答下,十分感谢~




public String byteArr2HexStr(byte[] arrB) throws Exception {
int iLen = arrB.length;

StringBuffer sb = new StringBuffer(iLen * 2);
for (int i = 0; i < iLen; i++) {
int intTmp = arrB[i];

while (intTmp < 0) {
intTmp = intTmp + 256;
}

if (intTmp < 16) {
sb.append("0");
}
sb.append(Integer.toString(intTmp, 16));
}
return sb.toString();
}


public String encrypt(String strIn) throws Exception {
return byteArr2HexStr(encrypt(strIn.getBytes()));
}

java 代码如上
参与9

8同行回答

zhenfang_lizhenfang_li软件开发工程师华为
楼上的说的对,方法好像必须是静态的才可以,我用的时候也遇到过类似的问题。显示全部
楼上的说的对,方法好像必须是静态的才可以,我用的时候也遇到过类似的问题。收起
互联网服务 · 2012-10-09
浏览1137
weiruan85weiruan85数据库管理员ibm
PARAMETER STYLE javaexternal name 'DES!encrypt'; 错误貌似很明显就是没有找到'DES!encrypt'; 另外: 兄不可以这么说leo ,那是个大牛显示全部
PARAMETER STYLE java
external name 'DES!encrypt';

错误貌似很明显就是没有找到'DES!encrypt';

另外: 兄不可以这么说leo ,那是个大牛收起
政府机关 · 2012-08-30
浏览1069
zn85600367zn85600367开发工程师深圳拜特科技
回复 5# leo     请你百度的时候也看清楚问题,真是的。。。显示全部
回复 5# leo


    请你百度的时候也看清楚问题,真是的。。。收起
金融其它 · 2012-08-30
浏览1081
leo_wynleo_wyn商业智能工程师Security
db2 => ? sql4306SQL4306N  Java 存储过程或用户定义的函数 ""(特定名称 "")不能调用 Java 方法 "",特征符为 ""。说明:找不到由 CREATE PROCEDURE 或 CREATE FUNCTION 语句的 EXTERNAL NAME 子句给定的 Java 方法。它已声明的自变量列表可能与数据库期望的自变量...显示全部
db2 => ? sql4306


SQL4306N  Java 存储过程或用户定义的函数 "<名称>"(特定名称 "<特
      定名称>")不能调用 Java 方法 "<方法>",特征符为 "<字符串>"。

说明:

找不到由 CREATE PROCEDURE 或 CREATE FUNCTION 语句的 EXTERNAL NAME 子句
给定的 Java 方法。它已声明的自变量列表可能与数据库期望的自变量列表不匹
配,或者它可能不是"public"实例方法。

用户响应:

确保 Java 实例方法存在,标志为"public"且具有此调用期望的自变量列表。

  sqlcode:-4306

  sqlstate:42724收起
系统集成 · 2012-08-29
浏览1103
zn85600367zn85600367开发工程师深圳拜特科技
:L难道就没人。。。。。显示全部
:L难道就没人。。。。。收起
金融其它 · 2012-08-29
浏览1071
zn85600367zn85600367开发工程师深圳拜特科技
这不是有问必答么???显示全部
这不是有问必答么???收起
金融其它 · 2012-08-27
浏览1079
zn85600367zn85600367开发工程师深圳拜特科技
没有人知道么?显示全部
没有人知道么?收起
金融其它 · 2012-08-24
浏览1048
leiyutianleiyutian数据库架构师chengdu
有几个地方你改改试试:1. public String encrypt(String strIn) throws Exception {return byteArr2HexStr(encrypt(strIn.getBytes()));}encrypt不应该使用吧,编译应该不过。另外这个方法变成static显示全部
有几个地方你改改试试:
1.
public String encrypt(String strIn) throws Exception {
return byteArr2HexStr(encrypt(strIn.getBytes()));
}

encrypt不应该使用吧,编译应该不过。
另外这个方法变成static收起
互联网服务 · 2012-08-23
浏览1055

提问者

zn85600367
开发工程师深圳拜特科技

问题状态

  • 发布时间:2012-08-23
  • 关注会员:1 人
  • 问题浏览:4560
  • 最近回答:2012-10-09
  • X社区推广