我正在写一个小java程序通过JDBC在AS / 400 DB2表中写入数据(版本的db2jcc.jar 1.0.581),并触发相关联的INSERT操作。 这触发适用于其中包含我的表(f4104)与来自(jdta73p10)不同的库相关联的各种表格。
下文中,笔者用它来建立连接,并读取完美运行数据的代码。
import java.sql.*;
import com.ibm.db2.jcc.*;
public class ProvaNUMEAN13 {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
DB2DataSource dbds = new DB2DataSource();
dbds.setDriverType(4);
dbds.setServerName("a60d45bb");
dbds.setPortNumber(446);
dbds.setDatabaseName("prodgrp");
dbds.setDescription("Prova collegamento");
dbds.setUser("XXXXX");
dbds.setPassword("XXXXX");
Connection con = dbds.getConnection();
Statement stmtNum = con.createStatement();
stmtNum.executeQuery("select * from INTERFACCE.NUMEAN13");
ResultSet rs = stmtNum.getResultSet();
rs.next();
System.out.println("Valore numeratore: " + rs.getString("E13EAN"));
System.out.println("Tipo numeratore: " + rs.getString("K13KEY"));
stmtNum.close();
Statement stmtAnag = con.createStatement();
stmtAnag.executeQuery("select * from jdta73p10.f4101lb where IMLITM = " + "'" + args[0] + "'");
ResultSet rsAna = stmtAnag.getResultSet();
int idCodice = 0;
if (!rsAna.next()) {
System.out.println("Il codice " + args[0] + " non esiste in anagrafica!");
} else {
idCodice = rsAna.getInt("IMITM");
System.out.println("idCodice per " + args[0] + ": " + Integer.toString(idCodice));
Statement stmtQEAN = con.createStatement();
stmtQEAN.executeQuery("select IVALN, IVCITM, IVLITM, IVDSC1 from jdta73p10.f4104 where IVXRT = 'B ' and IVALN = '8000000000000'");
ResultSet rsQEAN = stmtQEAN.getResultSet();
if (rsQEAN.next()) {
System.out.println("Codice EAN per " + args[0] + " già presente: " + rsQEAN.getString("IVALN"));
System.out.println("Valore EAN13: " + rsQEAN.getString("IVCITM"));
System.out.println("Risultato ricerca per EAN13: " + rsQEAN.getString("IVLITM")+" - "+rsQEAN.getString("IVDSC1"));
}
}
}
}
问题是,当我尝试执行INSERT操作(象下面这样); 在AS / 400中产生由于触发器执行一个错误。
stmtQEAN.execute("insert into jdta73p10.f4104 (IVXRT,IVITM,IVCITM,IVDSC1,IVALN,IVLITM) values ('B ','18539','8000000000000','Prodotto PROVA','8000000000000','ABABABAB')");
这是AS / 400方的错误:
消息ID。 。 。 。 。 。 :RNQ0211严重性。 。 。 。 。 。 。 :99
消息类型。 。 。 。 。 :查询
发送日期。 。 。 。 。 。 :15年8月1日的时间发送。 。 。 。 。 。 :10时01分31秒
信息 。 。 。 。 :在调用程序或过程* LIBL / PRHWRAPUSE(CGDF)时发生错误。 原因。 。 。 。 。 :在声明152项目INTERFACCE / TRG_F4104A RPG程序TRG_F4104A试图调用的程序或过程* LIBL / WS_MATERI,但无法访问的程序或过程,库或所需的服务程序。 如果名称* N,则调用由程序指针绑定呼叫。
恢复。 。 。 :检查错误的原因的工作日志的详细信息和联系负责维护程序的人。 可能的选择为回复消息。 。 。 。 。 。 。 。 。 。 。 。 。 。 。 :
d - 获取RPG格式化转储。
的S - 获取系统转储。
我的问题是:我怎么可以指定触发所需的其他库? 在老版本的我的工具(Delphi编写的),我使用的客户端/访问ODBC那里是一个特殊的领域,您可以输入其他的库,但现在我不知道该怎么办。