`
dyccsxg
  • 浏览: 205264 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类

JDBC 常用操作

阅读更多

// 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数据库常用操作封装(升级版)

    看前面的那一版注释,加了同步,线程安全,封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,...

    JDBC数据库常用操作封装

    封装了jdbc常用操作,增删改查,查询ResultSet指定位置的记录,返回ResultSet每个列的名字,查询ResultSet中记录的行数...... 含源代码,测试代码!!!! 另附API说明,powerdesign图,mysql/mssql数据库代码. 用户只需使用...

    Spring JDBC常用Jar包

    在"Spring JDBC常用Jar包"中,包含了一些核心的库文件,这些文件在构建基于Spring的JDBC应用程序时是必不可少的。 1. **mysql-connector-java-5.1.24-bin.jar**: 这是MySQL数据库的JDBC驱动程序。它允许Java应用...

    JDBC常用连接串

    ### JDBC常用连接串详解 #### 一、概述 在Java开发中,JDBC(Java Database Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。本文将...

    常用的Jdbc库(工作中使用)

    本篇文章将详细介绍在工作中常用的几个JDBC库,包括MySQL、Oracle和SQL Server 2000的驱动。 首先,MySQL JDBC驱动,也被称为MySQL Connector/J,是连接Java应用程序和MySQL数据库的桥梁。它实现了Java.sql和javax....

    JDBC常考知识点,常用api

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与关系型数据库进行交互的...了解和熟练掌握这些JDBC基本知识点对于Java开发者来说至关重要,能够有效地进行数据库操作,同时确保代码的健壮性和兼容性。

    Oracle函数_JDBC常用写法

    在这个“Oracle函数_JDBC常用写法”的主题中,我们将探讨Oracle的一些关键函数和JDBC的常见使用方法。 首先,让我们来看看`ORACLE函数大全.txt`中可能涵盖的内容。Oracle函数包括数学函数、字符串函数、日期时间...

    jdbc常用驱动

    本资源包包含了几个主流数据库的JDBC驱动,包括SQL Server、Oracle、DB2以及MySQL,这些都是开发过程中非常常用的数据库系统。 1. SQL Server JDBC驱动:SQL Server是由微软提供的关系型数据库管理系统,它的JDBC...

    jdbc.zip_jdbc常用的命令

    insert into命令用于向表中插入数据。 insert into命令格式:insert into &lt;表名&gt; [(&lt;字段名1&gt;[,..&lt;字段名n &gt; ])] values ( 值1 )[, ( 值n )] 例如:往表 MyClass中插入两条记录,这两条记录...

    JDBC常用的数据库连接.doc

    在Java程序中,通过JDBC API可以实现对数据库的创建、查询、更新和删除等操作。 本文档列举了使用JDBC连接常见数据库的代码示例,包括MySQL、PostgreSQL、Oracle、Sybase、Microsoft SQL Server以及ODBC和DB2。以下...

    jdbc 常用三种数据库的相关jar包

    本主题将详细介绍与JDBC相关的三种常用数据库的jar包,以及它们在数据库操作中的作用。 首先,我们来了解JDBC的核心概念。JDBC是一个Java API,它为Java应用程序提供了连接到各种关系数据库的统一接口。通过JDBC,...

    jdbc常用类方法和jsp白皮书

    在Java Web开发中,JDBC...结合“JDBC常用类和方法.doc”和“JSP白皮书.doc”,我们可以深入学习这两个领域的细节,提高数据库操作和动态网页开发的能力。理解并熟练运用这些知识点,将有助于构建高效、健壮的Web应用。

    spring jdbc 常用jar包

    Spring提供了两种使用JDBC API的最佳实践,一种是以JdbcTemplate为核心的基于Template的JDBC的使用方式,另一种则是在JdbcTemplate基础之上的构建的基于操作对象的JDBC的使用方式。

    常用数据库jdbc驱动

    通过JDBC,开发者可以连接到数据库,执行SQL语句,处理查询结果,并对数据库进行增删改查等操作。JDBC驱动是实现JDBC规范的软件模块,它作为Java应用程序和实际数据库之间的桥梁。 1. Oracle 10g JDBC驱动: Oracle...

    java spring jdbc 常用jar包集合.zip

    这个“java spring jdbc 常用jar包集合.zip”文件很可能包含了实现Spring JDBC功能所需的各类库。在这个压缩包中,你可能会找到如下的核心组件: 1. **Spring Framework JAR**: - `spring-context.jar`:提供应用...

    常用数据库驱动和JDBC+URL

    标题中提到的“常用数据库驱动和JDBC+URL”指的是在Java中使用JDBC(Java Database Connectivity)技术连接不同数据库时所使用的驱动程序及其相应的URL(统一资源定位符)。JDBC是一种Java API,用于实现Java程序与...

    jdbc Utils 常用工具集

    JDBCUtils是一个常见的辅助工具类,它封装了JDBC的一些常用操作,以简化数据库的增删查改过程,避免重复性代码,提高开发效率。这篇博客(尽管链接无法直接访问)可能详细介绍了如何构建和使用这样的工具集。 ...

    JDBC常用接口总结

    总的来说,理解并熟练运用这些JDBC接口是进行Java数据库开发的基础,无论是简单的数据操作还是复杂的数据库交互,都离不开这些接口的支持。在实际开发中,根据具体需求选择合适的接口,能有效提升数据库操作的效率和...

Global site tag (gtag.js) - Google Analytics