您的位置:首页 > 数据库

对数据库完成增、删、改、查询

2016-02-04 15:26 211 查看
当不知道数据库各列类型时,对数据库实现增、删、改、查询。通过给出sql语句、若干参数完成操作。

<span style="font-size:18px;">package dbutils;

import java.sql.ResultSet;
import java.sql.SQLException;

import jdbc.JDBCUtils;

import org.junit.Test;

public class Demo2 {
	@Test
	public void fun(){
//		Stu stu=new Stu(3,"haha");
//		addStu(stu);
		
		Stu s=selectStu(3);
		System.out.println(s.getId()+","+s.getName());
	}
	public void addStu(Stu stu){
		QR qr=new QR(JDBCUtils.getDataSource());
		String sql="insert into stu values(?,?)";
		Object [] params={stu.getId(),stu.getName()};
		qr.update(sql, params);
	}
	
	public Stu selectStu(int id){
		QR qr=new QR(JDBCUtils.getDataSource());
		String sql="select * from stu where id=? ";
		Object [] params={id};
		RsHandler<Stu> rh=new RsHandler<Stu>(){

			@Override
			public Stu handle(ResultSet rs) throws SQLException{
				// TODO Auto-generated method stub
				if(!rs.next()) return null;
				Stu stu =new Stu();
				stu.setId(rs.getInt("id"));
				stu.setName(rs.getString("name"));
				return stu;
			}
			
		};
		return (Stu) qr.query(sql, rh, params);
	}
}</span>


<span style="font-size:18px;">package dbutils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import jdbc.JDBCUtils;

public class QR <T> {
	
	private DataSource dataSource; 
	public QR(DataSource dataSource) {
		super();
		this.dataSource = dataSource;
	}

	public QR() {
		super();
	}

	/**
	 * 完成增、删、改
	 * 
	 */
	
	public int update(String sql,Object ...params ){
		Connection con=null;
		PreparedStatement pps=null;
		try {
			con=dataSource.getConnection(); //通过连接池获取连接对象
			pps=con.prepareStatement(sql);
			initParms(pps,params);
			return pps.executeUpdate();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}
		finally {
			try {
					if(pps!=null) pps.close();
					if(con!=null) con.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					throw new RuntimeException(e);
				}
		}
	}
	
	//给参数赋值
	public void initParms(PreparedStatement pps,Object ...params) throws SQLException{
		for (int i=0;i<params.length;i++){
			pps.setObject(i+1, params[i]);
		}
	}
	
	public T query(String sql, RsHandler<T> rh, Object ... params){
		Connection con=null;
		PreparedStatement pps=null;
		try {
			con=dataSource.getConnection(); //通过连接池获取连接对象
			pps=con.prepareStatement(sql);
			initParms(pps,params);
			ResultSet rs= pps.executeQuery();
			return rh.handle(rs);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}
		finally {
			try {
					if(pps!=null) pps.close();
					if(con!=null) con.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					throw new RuntimeException(e);
				}
		}
	}

}

//把结果集转换成对象
interface RsHandler<T>{
	public T handle(ResultSet rs) throws SQLException;
}
</span>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: