1. JDBC 驱动程序
1.1 DB2 JDBC Type 2 驱动程序
DB2 客户机
不建议使用
COM.ibm.db2.jdbc.app.DB2Driver 调用Class.forName() 方法。
1.2 IBM DB2 通用JDBC 和SQLJ 驱动程序
提供了Type 2 连接性和Type 4 连接性
可以将这个驱动程序用于applet 和应用程序
com.ibm.db2.jcc.DB2Driver 调用Class.forName() 方法。
2. 建立数据库连接
import java.sql.*; 头文件
String url = "jdbc:db2:sample"; TYPE 2
String url = "jdbc:db2:sample://localhost:50000"; TYPE4
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection con = DriverManager.getConnection(url);
3. Statement 对象
Statement 对象是使用Connection.createStatement() 方法创建的
Statement stmt;
stmt = con.createStatement();
stmt.executeUpdate("DELETE FROM EMPLOYEE WHERE EMPNO = '000099'");
ResultSet rs;
rs = stmt.executeQuery("SELECT EMPNO, LASTNAME FROM EMPLOYEE");
while (rs.next()) {
System.out.println(rs.getString(1) + ", " + rs.getDate(2));
}
4. PreparedStatement 对象
PreparedStatement 对象是使用Connection.prepareStatement() 方法创建的
pStmt = con.prepareStatement("UPDATE STAFF SET COMM=? WHERE ID=?");
pStmt.setDouble(1,710.53);
pStmt.setInt(2,350);
pStmt.executeUpdate();
5. 提交事务
con.setAutoCommit(true); 自动提交
con.commit(); ...
con.rollback();
执行分布式事务
DB2XADataSource db2ds = new com.ibm.db2.jcc.DB2XADataSource();
6.开发SQLJ 应用程序(静态sql)
6.1 添加头文件
import sqlj.runtime.*; 头文件
import java.sql.*; 头文件
6.2 建立连接上下文
#sql context Ctx;
String url = " jdbc:db2:sample://localhost:50000"; TYPE 4
Class.forName("com.ibm.db2.jcc.DB2Driver");
Ctx connCtx = new Ctx(url,true);
String url = " jdbc:db2:sample”; TYPE 2
Class.forName("COM.ibm.db2.jdbc.app.DB2Driver");
6.3 发出SQL 语句
String staffJob = "Sales";
#sql [connCtx] {UPDATE STAFF SET COMM=400 WHERE JOB = :staffJob};
6.4 编译程序
sqlj DbApp.sqlj
db2sqljcustomize -url jdbc:db2://localhost:50000/sample
-user uid -password pwd
DbApp_SJProfile0.ser
java DbApp
7. 错误处理
try {
...
rs = stmt.executeQuery("SELECT ID, NAME FROM STAFF WHERE JOB = 99");
...
}
catch(SQLException sqlEx) {
while(sqlEx != null) {
System.err.println("SQLException information");
System.err.println("Error msg: " + sqlEx.getMessage());
System.err.println("SQLSTATE: " + sqlEx.getSQLState());
System.err.println("Error code: " + sqlEx.getErrorCode());
sqlEx=sqlEx.getNextException();
}
}