java 数据库连接方式(九)

本文介绍了数据库操作中常用的快捷方法,包括查询单个对象、执行更新和插入语句等,旨在提供方便的应用接口,简化数据库交互过程。
import java.sql.*;
import java.util.List;

/**
 * 为数据库操作提供快捷方式。取连接、释放连接都包括在方法内,方便应用。
 * @author 
 */
public class DBUtils {

	/**
	 * 查询单个对象
	 * @param sql 查询语句
	 * @return 查询结果(如果有多条记录,返回第一条)
	 */
	public static String getString(String sql) {
		ConnectionObject co = ConnectionManager.getConnectionFactory().getConnection();
		try {
			ResultSet set = co.executeQuery(sql);
			String obj = null;
			try {
				if (set.next())
					obj = set.getString(1);
				set.close();
				return obj;
			}catch(Throwable e){
				throw new DBException(e);
			}
		}finally {
			ConnectionManager.getConnectionFactory().freeConnection(co);
		}
	}

	/**
	 * 查询单个对象
	 * @param sql 查询语句
	 * @return 查询结果(如果有多条记录,返回第一条)
	 */
	public static Object getObject(String sql) {
		ConnectionObject co = ConnectionManager.getConnectionFactory().getConnection();
		try {
			ResultSet set = co.executeQuery(sql);
			try {
				Object obj = null;
				if (set.next())
					obj = set.getObject(1);
				set.close();
				return obj;
			}catch(Throwable e){
				throw new DBException(e);
			}
		}finally {
			ConnectionManager.getConnectionFactory().freeConnection(co);
		}
	}

	/**
	 * 查询单个对象
	 * @param sql 查询语句
	 * @return 查询结果(如果有多条记录,返回第一条)
	 */
	public static int getInt(String sql) {
		ConnectionObject co = ConnectionManager.getConnectionFactory().getConnection();
		try {
			ResultSet set = co.executeQuery(sql);
			try {
				int obj = -1;
				if (set.next())
					obj = set.getInt(1);
				set.close();
				return obj;
			}catch(Throwable e){
				throw new DBException(e);
			}
		}finally {
			ConnectionManager.getConnectionFactory().freeConnection(co);
		}
	}

    /**
     * 执行更新、插入语句
     * @param sqlStr sql语句
     * @return 修改的记录条数
     * @throws Exception SQLException
     */
    public static int executeUpdate(String sqlStr) {
		ConnectionObject co = ConnectionManager.getConnectionFactory().getConnection();
		try {
			return co.executeUpdate(sqlStr);
		}finally {
			ConnectionManager.getConnectionFactory().freeConnection(co);
		}
    }

    //web专用
    public static List executeQuery(String strSql)
	{
		if(strSql == null || strSql.trim().length() == 0) return null;
		
		List dbrs = new java.util.ArrayList();
		ConnectionObject co = ConnectionManager.getConnectionFactory().getConnection();
		try{
			ResultSet rs = co.executeQuery(strSql);
			try{
				ResultSetMetaData rsmd = rs.getMetaData();
				int columncount = rsmd.getColumnCount();
		
				while(rs.next()){
					String[] tss = new String[columncount];
					for(int i=0;i<columncount;i++){
						tss[i] = rs.getString(i+1);
					}
					dbrs.add(tss);
				}
			}catch(Exception ex){
				ex.printStackTrace();
			}
		}catch(Exception ex){
			ex.printStackTrace();
			//数据库执行不成功,要向外面的应用抛出异常
		} finally{
			ConnectionManager.getConnectionFactory().freeConnection(co);
		}
		return dbrs;
	}
}

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值