使用jdbc连接数据库,当做查询时返回ResultSet,此时的不能关闭连接对象不然在取ResultSet时就是null的,所有要想把连接对象关闭必须把ResultSet转成集合。
``
```java
```java
package com.sun.java.dao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class BaseDao {
final String driver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
/**
* 此方法只能用于查询
* @param ip :你要连接的电脑地址
* @param databaseName: 你要连接的数据库名字
* @param user :sqlserver登录名
* @param password :SqlServer密码
* @param sql :查询sql语句
* @param obj :SQL语句给值
* @return :list:在list 里面装的MAP:在map中放的是一行表数据
*/
public ArrayList<Map<String, Object>> excuteQuery(String ip,String databaseName, String user,String password,String sql,Object []obj)
{
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=DriverManager.getConnection("jdbc:sqlserver://"+ip+":1433;database="+databaseName,user,password);
ps=con.prepareStatement(sql);
if(obj!=null&& obj.length>0)
{
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
rs=ps.executeQuery();
ArrayList<Map<String, Object>> list=ResultSetToList.resultSetToList(rs);
if(list.size()>0)
{
return list;
}else{
return null;
}
}catch(Exception e){
e.printStackTrace();
return null;
}finally{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 此方法只能执行增删改
* @param ip :你要连接的电脑地址
* @param databaseName: 你要连接的数据库名字
* @param user :sqlserver登录名
* @param password :SqlServer密码
* @param sql :查询sql语句
* @param obj :SQL语句给值
* @return 真假:
*/
public boolean excuteUpdate(String ip,String databaseName, String user,String password,String sql,Object []obj)
{
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{
Class.forName(driver);
con=DriverManager.getConnection("jdbc:sqlserver://"+ip+":1433;database="+databaseName,user,password);
ps=con.prepareStatement(sql);
if(obj!=null&& obj.length>0)
{
for (int i = 0; i < obj.length; i++) {
ps.setObject(i+1, obj[i]);
}
}
int a=ps.executeUpdate();
if(a>0)
{
return true;
}else{
return false;
}
}catch(Exception e){
e.printStackTrace();
return false;
}finally{
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
`
package com.sun.java.dao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
public class ResultSetToList {
public static ArrayList<Map<String, Object>> resultSetToList(ResultSet rs)
throws SQLException
{
ArrayList<Map<String, Object>> list=new ArrayList<Map<String, Object>>();
if(rs!=null)
{
while(rs.next())
{
// System.out.println();
Map<String, Object>map=new HashMap<String, Object>();
for (int i = 0; i < rs.getMetaData().getColumnCount(); i++) {
// System.out.print(rs.getMetaData().getColumnName(i+1)+":"+rs.getObject(i+1));
// System.out.println();
map.put(rs.getMetaData().getColumnName(i+1), rs.getObject(i+1));
}
list.add(map);
}
return list;
}else{
return null;
}
}
}