JDBC的DBUtil编写

public class DBUtil {
private Connection conn = null;
private ResultSet rs = null;
private PreparedStatement ste =null;
private final String URL = "JDBC:mysql://localhost/hyhl";
private final String USERNAME = "root";
private final String PASSWORD = "root";

static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}//加载就注册驱动
}

//获取connection连接对象的方法;
public Connection getCon(){
try {
conn = DriverManager.getConnection(URL,USERNAME,PASSWORD);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}


//关闭资源的方法
public void closeIO(){
try {
if(rs!=null){
rs.close();
}
if(ste!=null){
ste.close();
}
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


//查询的方法
public List<Map<String,String>> query(String sql,Object obj[]){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
//存储元数据提出的数据
getCon();
try {
ste = conn.prepareStatement(sql);
//查询要执行结果集
//我们不能再工具类操作结果集,而是把结果集反馈给使用者
//ResultSet 不能反馈出去,释放资源后就没结果集了
//它必须被关闭,那么关闭之前需要把数据存储到别的地方
//把需要填写占位符的值设置到SQL语句当中
for(int i = 0 ; i < obj.length  ; i++){
// System.out.println(rsmd.getColumnName(i+1));//该方法返回字段名
ste.setObject(i+1,obj[i]);
}

rs = ste.executeQuery();//查询数据返回结果集

ResultSetMetaData rsmd = rs.getMetaData();//从结果集复制份元数据

//一个Map储存一行记录,创建多少Map?有多少元数据的行数就创建多少Map;
while(rs.next()){
Map<String,String> ma = new HashMap<String,String>();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
ma.put(rsmd.getColumnName(i),rs.getString(i));//有几个字段  Map录入几次值;
}
//把map放进list里面
list.add(ma);
}
//处理结果集
closeIO();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}

public int update(String sql,Object [] obj){
int i=0;
getCon();
try {
ste = conn.prepareStatement(sql);

//从数据库拿值
for (int j = 0; j < obj.length; j++) {
ste.setObject(j+1, obj[j]);
}

i = ste.executeUpdate();//更新几条数据返回几

closeIO();



} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return i;


}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值