java dbhelper_JAVA- JDBC之DBHelper

package com.myit.util;

import java.lang.reflect.Field;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

public class DBHelper {

private static final String DRIVER="com.mysql.jdbc";

private static final String URL="jdbc:mysql://localhost:3306/dvd";

private static final String USER="root";

private static final String PASSWORD="root";

/**

* 连接数据库

* @return 链接数据库对象

*/

public Connection getConnection(){

Connection conn=null;

try {

Class.forName(DRIVER);

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

conn=DriverManager.getConnection(URL, USER, PASSWORD);

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return conn;

}

/**

* 释放相应的资源

* @param rs

* @param pstmt

* @param conn

*/

public void closeAll(ResultSet rs,PreparedStatement pstmt,Connection conn){

try {

if(rs!=null){

rs.close();

}

if(pstmt!=null){

pstmt.close();

}

if(conn!=null){

conn.close();

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 此方法可以完成增删改所有的操作

* @param sql

* @param params

* @return true or false

*/

public boolean excuteUpdate(String sql,List params){

int res=0;//受影响的行数

Connection conn=null;

PreparedStatement pstmt = null;

ResultSet rs=null;

try {

conn=getConnection();

pstmt=conn.prepareStatement(sql);//装载sql语句

if(params!=null){

//加入有?占位符,在执行之前把?占位符替换掉

for(int i=0;i

pstmt.setObject(i+1, params.get(i));

}

}

res=pstmt.executeUpdate();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeAll(rs, pstmt, conn);

}

return res>0?true:false;

}

/**

* 使用泛型方法和反射机制进行封装

* @param sql

* @param params

* @param cls

* @return

*/

public List executeQuery(String sql,List params,Class cls) throws Exception{

Connection conn=null;

PreparedStatement pstmt = null;

ResultSet rs=null;

List data=new ArrayList();

try {

conn=getConnection();

pstmt=conn.prepareStatement(sql);//装载sql语句

if(params!=null){

//加入有?占位符,在执行之前把?占位符替换掉

for(int i=0;i

pstmt.setObject(i+1, params.get(i));

}

}

rs=pstmt.executeQuery();

//把查询出来的记录封装成对应的实体类对象

ResultSetMetaData rsd=rs.getMetaData();//获得列对象,通过此对象可以得到表的结构,包括,列名,列的个数,列的数据类型

while(rs.next()){

T m=cls.newInstance();

for(int i=0;i

String col_name=rsd.getColumnName(i+1);//获得列名

Object value=rs.getObject(col_name);//获得列所对应的值

Field field=cls.getDeclaredField(col_name);

field.setAccessible(true);//给私有属性设置可访问权

field.set(m, value);//给对象的私有属性赋值

}

data.add(m);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

closeAll(rs, pstmt, conn);

}

return data;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值