import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ConDB
{
private static Connection getConnection() {
Connection conn = null;
try {
String url = "jdbc:db2://192.168.1.2:50000/db_test";
String driver = "com.ibm.db2.jcc.DB2Driver";
String uid = "db2admin";
String pwd = "123456";
Class.forName(driver);
conn = DriverManager.getConnection(url, uid, pwd);
return conn;
} catch (ClassNotFoundException e) {
System.out.println("driver wrong Problem~");
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
try {
// create data source
Connection conn = null;
conn = getConnection();
String sql = null;
Statement stmt = conn.createStatement();
sql = "create trigger DB2ADMIN.TEST_TR_"
+ " AFTER INSERT"
+ " ON DB2ADMIN.TEST"
+" REFERENCING NEW AS OLD NEW_TABLE AS NEW"
+ " FOR EACH ROW"
+ " MODE DB2SQL"
+ " BEGIN ATOMIC"
+ " declare v_cbd_db_waite INTEGER;"
+ " set v_cbd_db_waite =(select count(*) from aaa where NAME='TEST');"
+ " if (v_cbd_db_waite = 0 ) then "
+ " insert into bbb(NAME,WAITE) VALUES('TEST',1);"
+ " else"
+ " update bbb set cbd_db_waite = 1 where name='TEST';"
+ " end if;"
+ "END;";
System.out.println(sql);
stmt.execute(sql);
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
如果直接执行sql语句没有任何问题,但使用这段程序就不行。请大家如何解决。
环境:db2 9.5 java使用的是jcc驱动。谢谢各位
在数据库时面写好个存储过程用java调呗
改了数据库的分隔符试试吧~`
com.ibm.db2.jcc.b.nm: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=set;cbd_db_waite INTEGER;<SQL_variable_declarations>, DRIVER=3.50.152
分隔符换了没改彻底吧