JAVA JDBC通用BaseDao版0.1

使用jdbc连接数据库,当做查询时返回ResultSet,此时的不能关闭连接对象不然在取ResultSet时就是null的,所有要想把连接对象关闭必须把ResultSet转成集合。


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;
        }
    }
}

你可能感兴趣的:(java,数据库,jdbc)