JdbcUtils

import java.io.IOException;
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.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

public class JdbcUtils {
    private static volatile JdbcUtils jdbcUtils = null;
    private static Connection conn = null;
    private static ResultSet rs = null;
    private static PreparedStatement ps = null;
    static String url = null;
    static String user = null;
    static String password = null;
    static {
        Properties p = new Properties();
        try {
            p.load(JdbcUtils.class.getClassLoader().getResourceAsStream(
                    "com/mysql/properties/mysql.properties"));
            url = p.getProperty("url");
            user = p.getProperty("user");
            password = p.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private JdbcUtils() {
        getConn();
    }

    private void getConn() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static JdbcUtils newInstance() {
        if (jdbcUtils == null) {
            synchronized (JdbcUtils.class) {
                if (jdbcUtils == null) {
                    jdbcUtils = new JdbcUtils();
                }
            }
        }
        return jdbcUtils;
    }

    public int insert(String sql, Object... obj) {
        int result = 0;
        try {
            ps = conn.prepareStatement(sql);
            int index = 1;
            for (Object o : obj) {
                ps.setObject(index++, o);
            }
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            return -1;
        } finally {
            close();
        }
        return result;
    }

    public int Delete(String sql, Object... obj) {
        int result = 0;
        try {
            ps = conn.prepareStatement(sql);
            int index = 1;
            for (Object o : obj) {
                ps.setObject(index++, o);
            }
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            return -1;
        } finally {
            close();
        }
        return result;
    }

    public int update(String sql, Object... obj) {
        int result = 0;
        try {
            ps = conn.prepareStatement(sql);
            int index = 1;
            for (Object o : obj) {
                ps.setObject(index++, o);
            }
            result = ps.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
            return -1;
        } finally {
            close();
        }
        return result;
    }

    public List<Map<String, Object>> select(String sql, Object... obj) {
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        try {
            ps = conn.prepareStatement(sql);
            int index = 1;
            for (Object o : obj) {
                ps.setObject(index++, o);
            }
            rs = ps.executeQuery();
            ResultSetMetaData rsd = rs.getMetaData();
            int length = rsd.getColumnCount();
            // System.out.println(length);
            while (rs.next()) {
                Map<String, Object> m = new HashMap<String, Object>();
                for (int i = 1; i <= length; i++) {
                    m.put(rsd.getColumnName(i), rs.getObject(i));
                }
                // System.out.println(m.size());
                list.add(m);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {

        }
        return list;
    }

    private void close() {
        try {
            if (rs != null) {
                rs.close();
            }
            if (ps != null) {
                ps.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}
时间: 2024-10-04 21:18:54

JdbcUtils的相关文章

JDBCUtils工具类

JdbcUtils.java 1 import java.sql.Connection; 2 import java.sql.SQLException; 3 4 import javax.sql.DataSource; 5 6 import com.mchange.v2.c3p0.ComboPooledDataSource; 7 /** 8 * 依赖: 9 * + c3p0-config.xml 10 * + c3p0-0.9.2-pre1.jar 11 * + mchange-commons-

jdbcUtils连接数据库

JdbcUtils用来获取Connection * 底层使用了c3p0连接池    c3p0-0.9.2-pre1.jar,mchange-commons-0.2.jar * 还需要mysql驱动    mysql-connector-java-5.1.13-bin.jar public class JdbcUtilsTest { /** * 底层使用了c3p0连接池,说明我们还要提供c3p0配置文件  c3p0-config.xml里面的用户名,密码,端口号,数据库名字要按照自己的进行修改 *

网上图书商城项目学习笔记-035工具类之JdbcUtils及TxQueryRunner及C3P0配置

事务就是保证多个操作在同一个connection,TxQueryRunner通过JdbcUtils获取连接,而JdbcUtils通过ThreadLocal<Connection>确保了不同线程设置的con不会混淆(tl.set(con)),而同一线程的connecion可以共用,从而具有事务的功能 1.JdbcUtils.java 1 package cn.itcast.jdbc; 2 3 import java.sql.Connection; 4 import java.sql.SQLExc

JDBC:编写通用的 JDBCUtils工具类

基本上已经可以应付常用方法 1.为JDBCUtils 添加事务处理方法 2.处理多线程并发访问问题 package cn.cil.Utls; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; /** * 编写通用的 JDB

07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao

 1  创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyauto_increment, username varchar(20), password varchar(20) ); 2  添加依赖的jar包 c3p0-0.9.1.2.jar mysql-connection-java-5.0.8-bin.jar commons-beanutils-1.8.0.j

利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)

最近看老罗的视频,跟着完成了利用Java操作MySql数据库的一个框架类JdbcUtils.java,完成对数据库的增删改查.其中查询这块,包括普通的查询和利用反射完成的查询,主要包括以下几个函数接口: 1.public Connection getConnection()   获得数据库的连接 2.public boolean updateByPreparedStatement(String sql, List<Object>params)throws SQLException  更新数据库

简易高重用的jdbcutils工具封装实现类以及简易连接池实现

由于现在发现做个小项目都是导入n多的依赖包,很烦琐,只想快点开发完一个个的小需求项目,这个时候真心不想用框架,只能自己写个jdbcutils,虽然网上有很多有apache的,阿里的,但是感觉用过后都不怎么顺手,然后自己花了点时间写个新的,不喜勿喷 1.我们要写个resultset集合转成bean的回调接口,这个用过spring jdbc的人都知道这玩意 package org.framework.mvc.jdbc.bean; import java.sql.ResultSet; import j

JDBCUtils工具类配置文件的读取方式

//第一种方式 Properties prop= new Properties();        //读取文件   通过类加载读取        InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("data.properties");        prop.load(is);        String driverClass = prop.getProperty("driverCl

JDBCUtils相关

1.之所以使用类加载器InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbcInfo.properties");获得流,是因为类加载器启动时自动从src目录下寻找文件. 如果写成InputStream is = new FileInputStream(new File("src/jdbcInfo.properties"));效果是一样的.会在class中寻找和src路径相