用于JDBC操作数据库的公共类

Posted on 2010-03-03 22:35  FreeSkyCD  阅读(1069)  评论(0编辑  收藏  举报
   哈哈,再发一个用于JDBC操作数据库的公共类,这也是我在很久以前写的,其中的RWProperties类在我的“Java基础”分类中有一篇《用于读写Properties属性配制文件的通用类》的文章中就有,希望能对大家有些帮助,以后我还会发更多的原创文章上来,也希望大家能提出一些宝贵的建议和想法,让我们大家在这里共同成长!


/*
 * @(#)CommonSql.java  2009-2-14
 * 
 * Copyright 2009 BianJing,All rights reserved.
 */
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 * 用于JDBC操作数据库的公共类
 * 
 * @author BianJing<br/>
 *         E-mail: vipbooks@163.com
 * @version  2009-2-14
 */
public class CommonSql {
    /** 数据库连接对象 */
	private Connection conn;
	/** 数据库操作对象 */
	private PreparedStatement ps;
	/** 返回的数据结果集对象 */
	private ResultSet rs;

	/**
	 * 测试数据库连接是否成功
	 * @param args
	 */
/*	public static void main(String[] args) {
		CommonSql c = new CommonSql();
		if(c.openConn())
		    System.out.println("数据库连接成功!");
		else 
		    System.out.println("数据库连接失败!");
		
		c.closeAll();
	}*/
	/**
	 * 打开数据库连接并创建数据库连接对象
	 * @return boolean true:连接成功,false:连接失败
	 */
	public boolean openConn() {
		Boolean isPassed = false;
		String driver = RWProperties.getProperty("driver", "com/test/config/db.properties");
		String url = RWProperties.getProperty("url", "com/test/config/db.properties");
		String user = RWProperties.getProperty("user", "com/test/config/db.properties");
		String pwd = RWProperties.getProperty("pwd", "com/test/config/db.properties");

		try {
			Class.forName(driver);
			conn = DriverManager.getConnection(url, user, pwd);
			isPassed = true;
		} catch (ClassNotFoundException e) {
			closeAll();
			e.printStackTrace();
			System.out.println("数据库连接失败!");
		} catch (Exception e) {
			closeAll();
			e.printStackTrace();
			System.out.println("数据库连接失败!");
		}

		return isPassed;
	}
	/**
	 * 执行数据库的新增和修改语句,只操作一张表
	 * @param sql 要执行的SQL语句
	 * @return boolean true:执行成功,false:执行失败
	 */
	public boolean execUpdate(String sql) {
		boolean isPassed = false;
		// 判断连接数据库是否成功
		if (openConn()) {
			try {
				conn.setAutoCommit(false);
				ps = conn.prepareStatement(sql);
				ps.executeUpdate();
				conn.commit();
				isPassed = true;
			} catch (SQLException e) {
				System.out.println("SQL:"+sql);
				e.printStackTrace();
			} finally {
				closeAll();
			}
		} else {
			closeAll();
			System.out.println("SQL:"+sql);
			System.out.println("数据库连接失败!");
		}

		return isPassed;
	}
	/**
     * 执行数据库的新增和修改语句,同时操作多张表
     * @param sql 要执行的SQL语句的字符串数组
     * @return boolean true:执行成功,false:执行失败
     */
	public boolean execUpdate(String[] sql) {
		boolean isPassed = false;
		// 判断连接数据库是否成功
		if (openConn()) {
			try {
				conn.setAutoCommit(false);
				for (int i = 0; i < sql.length; i++) {
					ps = conn.prepareStatement(sql[i]);
					ps.executeUpdate();
				}
				conn.commit();
				isPassed = true;
			} catch (SQLException e) {
				try {
					conn.rollback();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
				for (int i = 0; i < sql.length; i++) {
					System.out.println("SQL:"+sql[i]);
				}
				e.printStackTrace();
			} finally {
				closeAll();
			}
		} else {
			closeAll();
			for (int i = 0; i < sql.length; i++) {
				System.out.println(sql[i]);
			}
			System.out.println("数据库连接失败!");
		}

		return isPassed;
	}
    /**
     * 执行数据库的新增和修改语句,同时操作多张表
     * @param sql 要执行的SQL语句的集合
     * @return boolean true:执行成功,false:执行失败
     */
	public boolean execUpdate(List<String> sql) {
		boolean isPassed = false;
		// 判断连接数据库是否成功
		if (openConn()) {
			try {
				conn.setAutoCommit(false);
				for (int i = 0; i < sql.size(); i++) {
					ps = conn.prepareStatement(sql.get(i));
					ps.executeUpdate();
				}
				conn.commit();
				isPassed = true;
			} catch (SQLException e) {
				try {
					conn.rollback();
				} catch (SQLException e1) {
					e1.printStackTrace();
				}
				for (int i = 0; i < sql.size(); i++) {
					System.out.println("SQL:"+sql.get(i));
				}
				e.printStackTrace();
			} finally {
				closeAll();
			}
		} else {
			closeAll();
			for (int i = 0; i < sql.size(); i++) {
				System.out.println(sql.get(i));
			}
			System.out.println("数据库连接失败!");
		}

		return isPassed;
	}
    /**
     * 执行数据库查询操作
     * @param sql 要执行的SQL语句
     * @return ResultSet 返回查询的结果集对象
     */
	public ResultSet execQuery(String sql) {
	    rs = null;
	    // 判断连接数据库是否成功
		if (openConn()) {
			try {
				ps = conn.prepareStatement(sql);
				rs = ps.executeQuery();
			} catch (SQLException e) {
				closeAll();
				System.out.println("SQL:"+sql);
				e.printStackTrace();
			}
		} else {
			closeAll();
			System.out.println("SQL:"+sql);
			System.out.println("数据库连接失败!");
		}

		return rs;
	}
	/**
	 * 关闭所有数据库连接对象
	 */
	public void closeAll() {
		if (conn != null) {
			try {
				conn.close();
				conn = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (ps != null) {
			try {
				ps.close();
				ps = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if (rs != null) {
			try {
				rs.close();
				rs = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}



已有 0 人发表留言,猛击->>这里<<-参与讨论


JavaEye推荐



Copyright © 2024 FreeSkyCD
Powered by .NET 8.0 on Kubernetes