// java code for db2 test
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
public class Main {
public static void main(String[] args) throws Exception {
Main t = new Main();
Connection conn = t.getConnection();
// +------------------------------------------+
// +-- table --+
// +------------------------------------------+
// check table exist
boolean exist = t.existTable(conn, "student");
// create table
if (!exist){
t.createTable(conn);
}
// drop table
t.dropTable(conn, "student");
// +------------------------------------------+
// +-- procedure --+
// +------------------------------------------+
// create procedure
t.createProcedure(conn);
// call procedure
t.callProcedure(conn);
// drop procedure
t.dropProcedure(conn);
// +------------------------------------------+
// +-- trigger --+
// +------------------------------------------+
// create trigger
t.createTable(conn);
t.createTrigger(conn);
t.executeCURD(conn);
t.dropTrigger(conn);
t.dropTable(conn,"student");
}
/**
* 获取数据库连接
* @return
*/
public Connection getConnection()throws Exception{
String driver = "com.ibm.db2.jcc.DB2Driver";
String url = "jdbc:db2://10.162.11.134:50000/sample";
String user = "db2admin";
String pass = "db2admin";
//
Class.forName(driver);
return DriverManager.getConnection(url, user, pass);
}
/**
* 判断表是否存在
* @param conn
* @param tableName
* @return
*/
public boolean existTable(Connection conn,String tableName){
boolean exist = false;
String sql = "select * from " + tableName + " where 1=0";
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.executeQuery(sql);
exist = true;
} catch(SQLException e){
exist = false;
} finally {
try { if(stmt != null)stmt.close(); } catch (Exception e){}
}
// print
System.out.println("Table " + tableName + " exist: " + exist);
// return
return exist;
}
/**
* 创建表
* @param conn
* @throws SQLException
*/
public void createTable(Connection conn) throws SQLException{
String sql = "create table student("
+ " id varchar(20) not null,"
+ " name varchar(32) not null,"
+ " age integer"
+ ")";
Statement stmt = conn.createStatement();
stmt.execute(sql);
// print
System.out.println("Create table : student");
}
/**
* 删除表
* @param conn
* @param tableName
*/
public void dropTable(Connection conn,String tableName){
String sql = "drop table " + tableName;
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close(); } catch (Exception e){}
}
// print
System.out.println("Drop table: " + tableName);
}
/**
* 创建存储过程
* @param conn
*/
public void createProcedure(Connection conn){
String sql = "create procedure tmp_proc (out curdtime varchar(19)) "
+ "specific tmp_proc "
+ "begin "
+ "declare cur cursor for "
+ " select to_char(current timestamp,'yyyy-MM-dd HH24:mi:ss') as dtime from sysibm.sysdummy1;"
+ "open cur; "
+ "fetch cur into curdtime; "
+ "close cur;"
+ "end";
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close();} catch(Exception e){}
}
}
/**
* 调用存储过程
* @param conn
*/
public void callProcedure(Connection conn){
String sql = "call tmp_proc(?)";
CallableStatement cstmt = null;
try {
cstmt = conn.prepareCall(sql);
cstmt.registerOutParameter(1, Types.VARCHAR);
cstmt.execute();
String result = cstmt.getString(1);
System.out.println("procedure result: " + result);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (cstmt != null)cstmt.close();} catch (Exception e){}
}
}
/**
* 删除存储过程
* @param conn
*/
public void dropProcedure(Connection conn){
String sql = "drop specific procedure tmp_proc";
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close();} catch (Exception e){}
}
}
/**
* 创建触发器
* @param conn
*/
public void createTrigger(Connection conn){
String sql = "create trigger trg_upd_stu "
+ "before update on student "
+ "referencing new as n "
+ "for each row "
+ "begin "
+ "if (n.age is null or n.age < 0) then "
+ " set n.age = 0; "
+ "end if; "
+ "end";
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close();} catch (Exception e){}
}
}
/**
* 删除触发器
* @param conn
*/
public void dropTrigger(Connection conn){
String sql = "drop trigger trg_upd_stu";
Statement stmt = null;
try {
stmt = conn.createStatement();
stmt.execute(sql);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close();} catch (Exception e){}
}
}
/**
* 执行增改查删
* @param conn
*/
public void executeCURD(Connection conn){
String insert = "insert into student values(?,?,?)";
String update = "update student set age = ? where id = ?";
String select = "select * from student";
String delete = "delete from student";
//
PreparedStatement pstmt = null;
Statement stmt = null;
try {
// insert
pstmt = conn.prepareStatement(insert);
pstmt.setString(1, "1");
pstmt.setString(2, "zhangsan");
pstmt.setInt(3, 22);
pstmt.addBatch();
pstmt.setString(1, "2");
pstmt.setString(2, "lisi");
pstmt.setInt(3, 23);
pstmt.addBatch();
pstmt.executeBatch();
// update
pstmt = conn.prepareStatement(update);
pstmt.setInt(1, -1);
pstmt.setString(2, "1");
pstmt.executeUpdate();
// select
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(select);
while (rs.next()){
String name = rs.getString("NAME");
int age = rs.getInt("AGE");
System.out.println("name: " + name + " age: " + age);
}
// delete
stmt.executeUpdate(delete);
} catch (Exception e){
e.printStackTrace();
} finally {
try { if (stmt != null)stmt.close();} catch (Exception e){}
try { if (pstmt != null)pstmt.close();} catch (Exception e){}
}
}
}
END.
分享到:
相关推荐
看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...
封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,mysql/mssql数据库代码. 用户只需使用...
新和删除等操作。 2. 不同的数据库(如 MySQL、Oracle等)在其内部处理数据的方式是不同的,因此每一个数据库厂商 都提供了自己数据库的访问接口。有了 JDBC 以后,不同厂商按照统一的规范来提供数据库驱动,在 程序...
insert into命令用于向表中插入数据。 insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] values ( 值1 )[, ( 值n )] 例如:往表 MyClass中插入两条记录,这两条记录...
包括了jdbc的增删改查的方法,其中包含查询返回包括实体和Map结果,支持更新对象和保存对象的操作。
Spring提供了两种使用JDBC API的最佳实践,一种是以JdbcTemplate为核心的基于Template的JDBC的使用方式,另一种则是在JdbcTemplate基础之上的构建的基于操作对象的JDBC的使用方式。
学习用肯定没有问题了 MYSQL SQLSERVER2000 ORACLE
jdbc基础,包含基本概念、数据库连接操作、JDBC常用接口、与oracle/mysql/db2创建连接、Statement、PreparedStatement会话使用、Clob/Blob大文件处理、批处理操作等。
9.1.2 JDBC常用API简介;9.1.3 JDBC编程步骤;9.1.3 JDBC编程步骤;9.1.3 JDBC编程步骤;9.1.3 JDBC编程步骤; 9.1.3 JDBC编程步骤 ; 9.1.3 JDBC编程步骤 ;9.1.4 学生实践练习;9.1.4 学生实践练习;9.2 PreparedStatement...
JDBC的特性:高度的一致性、简单性(常用的接口只有4、5个)。 1.在JDBC中包括了两个包:java.sql和javax.sql。 ① java.sql 基本功能。这个包中的类和接口主要针对基本的数据库编程服务,如生成连接、执行语句...
// 对数据库进行插入,更新,删除等操作时用executeUpdate()返回int型。 int i = ste.executeUpdate(); // 对数据库进行查看操作时用executeQuery()返回ResultSet结果集。 ResultSet res = ste.executeQuery(); 5....
DatabaseMetaData和ResultSetMetaData就是两个常用的获取数据库元数据相关信息的接口,本文只讲解DatabaseMetaData接口获取元数据的方法。 文章地址:http://blog.csdn.net/chen_zw/article/details/18816599
看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...
一些常用的 JDBC 操作, 官方实例 拿来分享~
JDBC的使用技巧,包括JDBC中很多的常用操作,好的设计思想。
本次实验,我了解了JDBC的概念与使用场景,理解了JDBC的工作原理,掌握了使用JDBC操作数据库的基本步骤,掌握了JDBC中几个常用接口和类,了解了带数据库操作的应用程序开发步骤等。
常用的jdbc的接口和类,需要时直接粘贴放在代码中用就可以
二、JDBC常用的接口和类 2.1 Driver接口 2.2 DriverManager类 2.3 Connection接口 2.4 Statement接口 2.5 PreparedStatement接口 2.6 ResultSet接口 2.7 DataSource接口 三、JDBC操作数据库的步骤 四、编写第一个...
程序启动的时候慢点,后期对数据库CRUD大幅度提升.(常用开源连接池DBCP) 3.特殊类型(date--日期,clob--大字段,blob--二进制) 的操作. 4.元数据(MetaData)的操作:包括 parameter , DB , ResultSet的元数据,配合反射,大...