`
frinder
  • 浏览: 38575 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java jdbc

 
阅读更多
package com.iflytek.jdbcdemo;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 数据库配置文件读取方法
 * @author WANGYAN
 *
 */
public class DbConfig {
	
	private String driver;
	private String url;
	private String userName;
	private String password;
	
	public DbConfig() {
		InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("com/iflytek/jdbcdemo/dbConfig.properties");
		Properties p=new Properties();
		try {
			p.load(inputStream);
			this.driver=p.getProperty("driver");
			this.url=p.getProperty("url");
			this.userName=p.getProperty("username");
			this.password=p.getProperty("passwrod");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public String getDriver() {
		return driver;
	}
	public String getUrl() {
		return url;
	}
	public String getUserName() {
		return userName;
	}
	public String getPassword() {
		return password;
	}
	
	

}




package com.iflytek.jdbcdemo;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * jdbc工具类
 * 
 * @author WANGYAN
 * 
 */
public final class JdbcUnits {

	/**
	 * 数据库连接地址
	 */
	private static String url ;
	/**
	 * 用户名
	 */
	private static String userName ;
	/**
	 * 密码
	 */
	private static String password;
	
	private static String driver;

	/**
	 * 装载驱动
	 */
	static {
		
		DbConfig config=new DbConfig();
		url=config.getUrl();
		userName=config.getUserName();
		password=config.getPassword();
		driver=config.getDriver();
		
		try {
			Class.forName(driver);
		} catch (ClassNotFoundException e) {
			throw new ExceptionInInitializerError(e);
		}
	}

	/**
	 * 建立数据库连接
	 * 
	 * @return
	 * @throws SQLException
	 */
	public static Connection getConnection() throws SQLException {
		Connection conn = null;
		conn = DriverManager.getConnection(url, userName, password);
		return conn;
	}

	/**
	 * 释放连接
	 * @param conn
	 */
	private static void freeConnection(Connection conn) {
		try {
			conn.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 释放statement
	 * @param statement
	 */
	private static void freeStatement(Statement statement) {
		try {
			statement.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 释放resultset
	 * @param rs
	 */
	private static void freeResultSet(ResultSet rs) {
		try {
			rs.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 释放资源
	 * 
	 * @param conn
	 * @param statement
	 * @param rs
	 */
	public static void free(Connection conn, Statement statement, ResultSet rs) {
		if (rs != null) {
			freeResultSet(rs);
		}
		if (statement != null) {
			freeStatement(statement);
		}
		if (conn != null) {
			freeConnection(conn);
		}
	}

}





package com.iflytek.jdbcdemo;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Types;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 数据库访问帮助类
 * 
 * @author WANGYAN
 * 
 */
public class JdbcHelper {

	private static Connection conn = null;
	private static PreparedStatement preparedStatement = null;
	private static CallableStatement callableStatement = null;

	/**
	 * 用于查询,返回结果集
	 * 
	 * @param sql
	 *            sql语句
	 * @return 结果集
	 * @throws SQLException
	 */
	@SuppressWarnings("rawtypes")
	public static List query(String sql) throws SQLException {

		ResultSet rs = null;
		try {
			getPreparedStatement(sql);
			rs = preparedStatement.executeQuery();

			return ResultToListMap(rs);
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}

	}

	/**
	 * 用于带参数的查询,返回结果集
	 * 
	 * @param sql
	 *            sql语句
	 * @param paramters
	 *            参数集合
	 * @return 结果集
	 * @throws SQLException
	 */
	@SuppressWarnings("rawtypes")
	public static List query(String sql, Object... paramters)
			throws SQLException {

		ResultSet rs = null;
		try {
			getPreparedStatement(sql);

			for (int i = 0; i < paramters.length; i++) {
				preparedStatement.setObject(i + 1, paramters[i]);
			}
			rs = preparedStatement.executeQuery();
			return ResultToListMap(rs);
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	/**
	 * 返回单个结果的值,如count\min\max等等
	 * 
	 * @param sql
	 *            sql语句
	 * @return 结果集
	 * @throws SQLException
	 */
	public static Object getSingle(String sql) throws SQLException {
		Object result = null;
		ResultSet rs = null;
		try {
			getPreparedStatement(sql);
			rs = preparedStatement.executeQuery();
			if (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}

	}

	/**
	 * 返回单个结果值,如count\min\max等
	 * 
	 * @param sql
	 *            sql语句
	 * @param paramters
	 *            参数列表
	 * @return 结果
	 * @throws SQLException
	 */
	public static Object getSingle(String sql, Object... paramters)
			throws SQLException {
		Object result = null;
		ResultSet rs = null;
		try {
			getPreparedStatement(sql);

			for (int i = 0; i < paramters.length; i++) {
				preparedStatement.setObject(i + 1, paramters[i]);
			}
			rs = preparedStatement.executeQuery();
			if (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	/**
	 * 用于增删改
	 * 
	 * @param sql
	 *            sql语句
	 * @return 影响行数
	 * @throws SQLException
	 */
	public static int update(String sql) throws SQLException {

		try {
			getPreparedStatement(sql);

			return preparedStatement.executeUpdate();
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free();
		}
	}

	/**
	 * 用于增删改(带参数)
	 * 
	 * @param sql
	 *            sql语句
	 * @param paramters
	 *            sql语句
	 * @return 影响行数
	 * @throws SQLException
	 */
	public static int update(String sql, Object... paramters)
			throws SQLException {
		try {
			getPreparedStatement(sql);

			for (int i = 0; i < paramters.length; i++) {
				preparedStatement.setObject(i + 1, paramters[i]);
			}
			return preparedStatement.executeUpdate();
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free();
		}
	}

	/**
	 * 插入值后返回主键值
	 * 
	 * @param sql
	 *            插入sql语句
	 * @return 返回结果
	 * @throws Exception
	 */
	public static Object insertWithReturnPrimeKey(String sql)
			throws SQLException {
		ResultSet rs = null;
		Object result = null;
		try {
			conn = JdbcUnits.getConnection();
			preparedStatement = conn.prepareStatement(sql,
					PreparedStatement.RETURN_GENERATED_KEYS);
			preparedStatement.execute();
			rs = preparedStatement.getGeneratedKeys();
			if (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		}
	}

	/**
	 * 插入值后返回主键值
	 * 
	 * @param sql
	 *            插入sql语句
	 * @param paramters
	 *            参数列表
	 * @return 返回结果
	 * @throws SQLException
	 */
	public static Object insertWithReturnPrimeKey(String sql,
			Object... paramters) throws SQLException {
		ResultSet rs = null;
		Object result = null;
		try {
			conn = JdbcUnits.getConnection();
			preparedStatement = conn.prepareStatement(sql,
					PreparedStatement.RETURN_GENERATED_KEYS);
			for (int i = 0; i < paramters.length; i++) {
				preparedStatement.setObject(i + 1, paramters[i]);
			}
			preparedStatement.execute();
			rs = preparedStatement.getGeneratedKeys();
			if (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		}

	}

	/**
	 * 调用存储过程执行查询
	 * 
	 * @param procedureSql
	 *            存储过程
	 * @return
	 * @throws SQLException
	 */
	@SuppressWarnings("rawtypes")
	public static List callableQuery(String procedureSql) throws SQLException {
		ResultSet rs = null;
		try {
			getCallableStatement(procedureSql);
			rs = callableStatement.executeQuery();
			return ResultToListMap(rs);
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	/**
	 * 调用存储过程(带参数),执行查询
	 * 
	 * @param procedureSql
	 *            存储过程
	 * @param paramters
	 *            参数表
	 * @return
	 * @throws SQLException
	 */
	@SuppressWarnings("rawtypes")
	public static List callableQuery(String procedureSql, Object... paramters)
			throws SQLException {
		ResultSet rs = null;
		try {
			getCallableStatement(procedureSql);

			for (int i = 0; i < paramters.length; i++) {
				callableStatement.setObject(i + 1, paramters[i]);
			}
			rs = callableStatement.executeQuery();
			return ResultToListMap(rs);
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	/**
	 * 调用存储过程,查询单个值
	 * 
	 * @param procedureSql
	 * @return
	 * @throws SQLException
	 */
	public static Object callableGetSingle(String procedureSql)
			throws SQLException {
		Object result = null;
		ResultSet rs = null;
		try {
			getCallableStatement(procedureSql);
			rs = callableStatement.executeQuery();
			while (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	/**
	 * 调用存储过程(带参数),查询单个值
	 * 
	 * @param procedureSql
	 * @param parameters
	 * @return
	 * @throws SQLException
	 */
	public static Object callableGetSingle(String procedureSql,
			Object... paramters) throws SQLException {
		Object result = null;
		ResultSet rs = null;
		try {
			getCallableStatement(procedureSql);

			for (int i = 0; i < paramters.length; i++) {
				callableStatement.setObject(i + 1, paramters[i]);
			}
			rs = callableStatement.executeQuery();
			while (rs.next()) {
				result = rs.getObject(1);
			}
			return result;
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free(rs);
		}
	}

	public static Object callableWithParamters(String procedureSql)
			throws SQLException {
		try {
			getCallableStatement(procedureSql);
			callableStatement.registerOutParameter(0, Types.OTHER);
			callableStatement.execute();
			return callableStatement.getObject(0);

		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free();
		}

	}

	/**
	 * 调用存储过程,执行增删改
	 * 
	 * @param procedureSql
	 *            存储过程
	 * @return 影响行数
	 * @throws SQLException
	 */
	public static int callableUpdate(String procedureSql) throws SQLException {
		try {
			getCallableStatement(procedureSql);
			return callableStatement.executeUpdate();
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free();
		}
	}

	/**
	 * 调用存储过程(带参数),执行增删改
	 * 
	 * @param procedureSql
	 *            存储过程
	 * @param parameters
	 * @return 影响行数
	 * @throws SQLException
	 */
	public static int callableUpdate(String procedureSql, Object... parameters)
			throws SQLException {
		try {
			getCallableStatement(procedureSql);
			for (int i = 0; i < parameters.length; i++) {
				callableStatement.setObject(i + 1, parameters[i]);
			}
			return callableStatement.executeUpdate();
		} catch (SQLException e) {
			throw new SQLException(e);
		} finally {
			free();
		}
	}

	/**
	 * 批量更新数据
	 * 
	 * @param sqlList
	 *            一组sql
	 * @return
	 */
	public static int[] batchUpdate(List<String> sqlList) {

		int[] result = new int[] {};
		Statement statenent = null;
		try {
			conn = JdbcUnits.getConnection();
			conn.setAutoCommit(false);
			statenent = conn.createStatement();
			for (String sql : sqlList) {
				statenent.addBatch(sql);
			}
			result = statenent.executeBatch();
			conn.commit();
		} catch (SQLException e) {
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				throw new ExceptionInInitializerError(e1);
			}
			throw new ExceptionInInitializerError(e);
		} finally {
			free(statenent, null);
		}
		return result;
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	private static List ResultToListMap(ResultSet rs) throws SQLException {
		List list = new ArrayList();
		while (rs.next()) {
			ResultSetMetaData md = rs.getMetaData();
			Map map = new HashMap();
			for (int i = 1; i < md.getColumnCount(); i++) {
				map.put(md.getColumnLabel(i), rs.getObject(i));
			}
			list.add(map);
		}
		return list;
	}

	/**
	 * 获取PreparedStatement
	 * 
	 * @param sql
	 * @throws SQLException
	 */
	private static void getPreparedStatement(String sql) throws SQLException {
		conn = JdbcUnits.getConnection();
		preparedStatement = conn.prepareStatement(sql);
	}

	/**
	 * 获取CallableStatement
	 * 
	 * @param procedureSql
	 * @throws SQLException
	 */
	private static void getCallableStatement(String procedureSql)
			throws SQLException {
		conn = JdbcUnits.getConnection();
		callableStatement = conn.prepareCall(procedureSql);
	}

	/**
	 * 释放资源
	 * 
	 * @param rs
	 *            结果集
	 */
	public static void free(ResultSet rs) {

		JdbcUnits.free(conn, preparedStatement, rs);
	}

	/**
	 * 释放资源
	 * 
	 * @param statement
	 * @param rs
	 */
	public static void free(Statement statement, ResultSet rs) {
		JdbcUnits.free(conn, statement, rs);
	}

	/**
	 * 释放资源
	 */
	public static void free() {

		free(null);
	}

}





http://www.oschina.net/code/snippet_224705_12407

分享到:
评论

相关推荐

    java jdbc 需要包

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它提供了一种标准化的方法,让程序员可以使用SQL语句访问数据库,而无需关心具体的数据库实现细节。在Java应用...

    Java JDBC学生数据管理系统

    Java JDBC学生数据管理系统是一个利用Java编程语言和JDBC(Java Database Connectivity)技术设计的应用,用于高效管理和操作学生数据。这个系统提供了用户友好的界面,使得用户可以方便地执行SQL(Structured Query...

    jdbc.zip_java jdbc_java+jdbc_jdbc_jdbc Java_zip

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组接口和类。它作为标准API,允许开发人员通过编写Java代码来访问和操作数据库,无需了解数据库特定的SQL语法或者驱动...

    Java jdbc

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种关系数据库进行交互的一组标准API。JDBC使得Java开发者能够编写可移植的数据库应用程序,无需针对不同数据库系统编写不同的代码。JDBC的核心是一...

    java jdbc连接sqlserver所需要的jar包

    Java JDBC(Java Database Connectivity)是Java语言中用于与数据库交互的一种技术,它为开发者提供了一种标准的方法来访问各种类型的数据库。在Java中连接SQL Server数据库时,你需要一个特定的驱动程序,通常是一...

    JAVA JDBC MYSQL连接源代码

    Java JDBC (Java Database Connectivity) 是Java编程语言中用于与各种数据库进行交互的一组接口和类。它是Java标准的一部分,允许开发者在Java程序中执行SQL语句,实现对数据库的读写操作。本示例主要涉及使用Java ...

    javajdbc

    Java JDBC(Java Database Connectivity)是Java编程语言中用于与各种数据库进行交互的一组接口和类。它是Java标准版(Java SE)的一部分,允许Java开发者执行SQL语句并处理结果。在深入探讨Java JDBC之前,先要理解...

    完美的java jdbc连接池实例

    Java JDBC 连接池是Java开发中非常关键的一部分,它能有效地管理数据库连接,提高应用程序的性能和效率。本实例提供了完美的Java JDBC连接池配置,适用于Oracle、MySQL和SQL Server等主流数据库,允许开发者轻松地在...

    JAVA JDBC教程.zip_zip怎么打开

    **JAVA JDBC教程** Java JDBC(Java Database Connectivity)是Java平台中的一个标准API,它允许Java应用程序连接到各种类型的数据库,实现数据的存取和处理。JDBC为开发者提供了一种统一的方式来访问不同的数据库...

    javaJDBC编程.ppt

    javaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.pptjavaJDBC编程.ppt

    java jdbc odbc 桥连接包

    java jdbc odbc 桥连接包 如何实现JDBC-ODBC桥连接到Access

    最全的javaJDBC--BaseDao

    最全的javaJDBC技术的BaseDao,相当于框架封装了,引用之后直接调用其中的方法传递参数以及sql语句就可以使用了。

    jdbc-oracle.rar_JDBC ORACLE_java JDBC orac_java jdbc oracle_jdbc

    在Java编程语言中,JDBC(Java Database Connectivity)是一个用于与各种数据库进行交互的标准接口。JDBC提供了一套规范,使得Java程序员可以使用统一的方法来访问数据库,包括Oracle数据库。Oracle是世界上最流行的...

    java jdbc连接Oracle的小例子

    Java JDBC(Java Database Connectivity)是Java语言中用来规范客户端程序如何访问数据库的应用程序接口,它提供了标准的API,使得Java程序员能够使用SQL语句来访问数据库。本篇将通过一个小型示例,详细介绍如何...

    mysql8.0,java jdbc驱动.zip

    Java JDBC(Java Database Connectivity)驱动则是Java程序与各种数据库进行交互的标准接口,使得Java开发者能够方便地访问和操作数据库。在本压缩包中,我们可能找到了用于连接MySQL 8.0的Java JDBC驱动,这将帮助...

    Java JDBC 编程知识全面总结 一张图搞定!

    全面的 Java JDBC 编程学习知识总结 一张图搞定! 结构性强,便于记忆! 资源博客:https://blog.csdn.net/CodeYearn/article/details/89196038

    sqlite jdbc jar java jdbc 链接 sqlite sqlite-jdbc-3.8.11.1.jar

    SQLite JDBC 是一个开源的 Java 驱动程序,允许 Java 应用程序通过 JDBC API 连接到 SQLite 数据库。SQLite 是一个轻量级、自包含的数据库引擎,无需单独的服务器进程,非常适合嵌入式应用或者对小型项目的数据存储...

    Java JDBC驱动大全

    Java JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一组接口和类,它使得开发者可以使用标准的Java API来访问各种类型的数据库系统。在Java应用中,JDBC驱动扮演着桥梁的角色,将Java程序与...

    Java JDBC学习

    Java JDBC 代码,可以借鉴一下,jdbc基本是这个模式

    java JDBC连接ACCESS驱动

    Java JDBC(Java Database Connectivity)是Java平台中用于与各种数据库进行交互的标准接口。它允许Java应用程序通过编写Java代码来访问和处理存储在数据库中的数据。在这个主题中,我们将深入探讨如何使用JDBC来...

Global site tag (gtag.js) - Google Analytics