Java JDBC数据库通用方法

最近期末实训图书管理系统,发现数据中查询有许多的相同查询的方式,于是打算写成通用方法方便使用


查询数据库中所需要的字段,数据库的字段名为map的key的值 ,保存在List集合中。此处为了防止注入攻击,提高性能,所以用的PreparedStatement类来执行SQL语句。


注:遵循PreparedStatement规则 如: table_name表中有多个字段,我们需要姓名为张三的id,name的写法
String sql = "select id,name from table_name where name=?" ;
List> queryObject(sql,new Object[]{"张三"}
代码如下:
public static List> queryObject(String sql , Object[]st){
    List> list = new ArrayList<>() ; 
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null; 
    try { 
        conn = JDBCUtils.getConnection(); 
        ps = conn.prepareStatement(sql);
        if(st!=null && st.length>0){
            for (int i = 0; i < st.length; i++) {
                ps.setObject(i+1, st[i]);
            }
        }
        rs = ps.executeQuery() ; 
        ResultSetMetaData rsmd = rs.getMetaData();
        while(rs.next()){
            Map map = new HashMap<>() ;
            for(int i=0;i

获取数据依次遍历list数据或去map集合,从map集合中依次遍历,key值对应相应的字段名 如

Java JDBC数据库通用方法_第1张图片


查询当前字段信息存在的行数,返回0代表不存在

public static int executeQuery(String sql,Object[] obj){
    Connection conn = JDBCUtils.getConnection();
    PreparedStatement ps = null;
    ResultSet rs = null ;
    int rows = 0 ;  
    try {
        ps = conn.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() ; 
        while(rs.next()){   
            rows++;
        } 
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
    // 关闭资源,这里可以手动判断是否为空关闭.注:由最后使用的对象依次向前关闭,如上关闭顺序 rs-->ps
        JDBCUtils.free(rs, ps, conn); 
    }
    return rows;
} 



插入数据 (0插入失败 ,1成功)

public  static int executeUpdate(String sql,Object[] obj){
    Connection conn = JDBCUtils.getConnection();
    PreparedStatement ps = null; 
    int rows = 0 ;  
    try {
        ps = conn.prepareStatement(sql); 
        if(obj!=null && obj.length>0){
            for (int i = 1; i <= obj.length; i++) {
                ps.setObject(i, obj[i-1]); 
            }
        } 
        rows= ps.executeUpdate() ; 
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        JDBCUtils.free(null, ps, conn);
    }
    return rows;
} 



查询单个值 (失败返回null)

public static Object getSingleObject(String sql , Object[] obj) {
    Object ob = null;
    Connection conn = JDBCUtils.getConnection();
    PreparedStatement ps = null;
    ResultSet rs = null ;
    try {
        ps = conn.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() ; 
        if(rs.next()) {
            ob = rs.getObject(1) ;
        }
    } catch (Exception e) {
        e.printStackTrace();
    }finally{
        JDBCUtils.free(rs, ps, conn);
    }
    return ob;
}

你可能感兴趣的:(Java)