• java jdbc 连接mysql 数据库


    JDBC连接MySQL

    加载及注册JDBC驱动程序

    Class.forName("com.mysql.jdbc.Driver");
    Class.forName("com.mysql.jdbc.Driver").newInstance();

    JDBC URL 定义驱动程序与数据源之间的连接

    标准语法:

    <protocol(主要通讯协议)>:<subprotocol(次要通讯协议,即驱动程序名称)>:<data source identifier(数据源)>

    MySQL的JDBC URL格式:

    jdbc:mysql//[hostname][:port]/[dbname][?param1=value1][&param2=value2]….

    示例:

    常见参数:

    user                       用户名
    password                   密码
    autoReconnect              联机失败,是否重新联机(true/false)
    maxReconnect               尝试重新联机次数
    initialTimeout             尝试重新联机间隔
    maxRows                    传回最大行数
    useUnicode                 是否使用Unicode字体编码(true/false)
    characterEncoding          何种编码(GB2312/UTF-8/…)
    relaxAutocommit            是否自动提交(true/false)
    capitalizeTypeNames        数据定义的名称以大写表示
    package mysqlmanage;
    
    import datastructures.QueueArray;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import tools.Time;
    
    /**
     * 执行数据库操作之前的业务逻辑 主要执行jdbcUtils类中的命令
     *
     * @author timeless <834916321@qq.com>
     * 2015年2.26
     */
    public class ExecCmd {
    
        /**
         * 获取 mysql 连接
         *
         * @return JdbcUtils对象
         */
        public static JdbcUtils getJdbcUtil() {
            //数据库用户名
            String USERNAME = "root";
            //数据库密码
            String PASSWORD = "xxxxxx";
            //驱动信息
            String URL = "jdbc:mysql://localhost:3306/mxManage";
            JdbcUtils jdbcUtils = new JdbcUtils(USERNAME, PASSWORD, URL);
            jdbcUtils.getConnection();
            return jdbcUtils;
        }
    /**
         * 执行更新操作 前提是 sql 语句中的数值不为空
         *
         * @param sql 要执行的 insert 或者 update 语句
         */
        public static void updateInsertData(String sql, JdbcUtils jdbcUtils) {
            try {
                System.out.println(sql);
                jdbcUtils.updateByPreparedStatement(sql, null);
            } catch (Exception ex) {
                System.out.println("sql 语句问题:语句为" + sql + "异常为:" + ex.toString());
            } finally {
                jdbcUtils.releaseConn();
            }
        }
    
        /**
         * 执行更新操作 前提是 sql 语句中的数值不为空
         *
         * @param sql 要执行的 insert 或者 update 语句
         * @param table 批量出入的表
         * @param field 数据表格中的字段 格式为:示例 (`id`, `name`) 每一个字段都需要写上
         */
        public static String formInsertSql(ArrayList<String> list, String table, String field) {
            if (list.size() == 0) {
                return null;
            }
            String sql = "INSERT INTO `" + table + "`" + field + " VALUES ";//(null,'dsadsad'),(null,'dss')
            try {
                for (String perdomain : list) {
                    sql = sql + "(null,'" + perdomain + "'),";
                }
                //把最后一个字符串","去掉
                int end = sql.length();
                sql = sql.substring(0, end - 1);
            } catch (Exception ex) {
                System.out.println("形成sql语句问题" + ex.toString());
            }
            return sql;
        }
    
    }
    package mysqlmanage;
    
    import java.lang.reflect.Field;
    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;
    
    public class JdbcUtils {
    
        //数据库用户名  
        private String USERNAME = "";
        //数据库密码  
        private String PASSWORD = "";
        //驱动信息   
        private String DRIVER = "com.mysql.jdbc.Driver";
        //数据库地址  
        private String URL = "";
        private Connection connection;
        private PreparedStatement pstmt;
        private ResultSet resultSet;
    
        public JdbcUtils(String username, String password, String url) {
            // TODO Auto-generated constructor stub  
            this.USERNAME = username;
            this.PASSWORD = password;
            this.URL = url;
            try {
                Class.forName(DRIVER);
            } catch (Exception ex) {
                System.out.println("数据库连接失败!" + ex.toString());
            }
        }
    
        /**
         * 获得数据库的连接
         *
         * @return
         */
        public Connection getConnection() {
            try {
                connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
            } catch (SQLException e) {
                // TODO Auto-generated catch block  
                e.printStackTrace();
            }
            return connection;
        }
    
        /**
         * 增加、删除、改
         *
         * @param sql
         * @param params
         * @return
         * @throws SQLException
         */
        public boolean updateByPreparedStatement(String sql, List<Object> params) throws SQLException {
            boolean flag = false;
            int result = -1;
            pstmt = connection.prepareStatement(sql);
            int index = 1;
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            result = pstmt.executeUpdate();
            flag = result > 0 ? true : false;
            return flag;
        }
    
        /**
         * 查询单条记录
         *
         * @param sql
         * @param params
         * @return
         * @throws SQLException
         */
        public Map<String, Object> findSimpleResult(String sql, List<Object> params) throws SQLException {
            Map<String, Object> map = new HashMap<String, Object>();
            int index = 1;
            pstmt = connection.prepareStatement(sql);
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            resultSet = pstmt.executeQuery();//返回查询结果  
            ResultSetMetaData metaData = resultSet.getMetaData();
            int col_len = metaData.getColumnCount();
            while (resultSet.next()) {
                for (int i = 0; i < col_len; i++) {
                    String cols_name = metaData.getColumnLabel(i + 1);
                    Object cols_value = resultSet.getObject(cols_name);
                    if (cols_value == null) {
                        cols_value = "";
                    }
                    map.put(cols_name, cols_value);
                }
            }
            return map;
        }
    
        /**
         * 查询单条记录
         *
         * @param sql
         * @param params
         * @return 是不是含有某条记录
         * @throws SQLException
         */
        public boolean verifyDataIsInDatabase(String sql, List<Object> params) throws SQLException {
            boolean status = false;
            int index = 1;
            pstmt = connection.prepareStatement(sql);
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            resultSet = pstmt.executeQuery();//返回查询结果  
            if (resultSet.next()) {
                status = true;
            }
            return status;
        }
    
        /**
         * 查询多条记录
         *
         * @param sql
         * @param params
         * @return    
         * @throws SQLException
         */
        public List<Map<String, Object>> findModeResult(String sql, List<Object> params) throws SQLException {
            List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
            int index = 1;
            pstmt = connection.prepareStatement(sql);
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            resultSet = pstmt.executeQuery();
            ResultSetMetaData metaData = resultSet.getMetaData();
            int cols_len = metaData.getColumnCount();
            while (resultSet.next()) {
                Map<String, Object> map = new HashMap<String, Object>();
                for (int i = 0; i < cols_len; i++) {
                    String cols_name = metaData.getColumnLabel(i + 1);
                    Object cols_value = resultSet.getObject(cols_name);
                    if (cols_value == null) {
                        cols_value = "";
                    }
                    map.put(cols_name, cols_value);
                }
                list.add(map);
            }
            return list;
        }
    
        /**
         * 通过反射机制查询单条记录
         * 
         * @param sql
         * @param params
         * @param cls
         * @return
         * @throws Exception
         */
        public <T> T findSimpleRefResult(String sql, List<Object> params, Class<T> cls) throws Exception {
            T resultObject = null;
            int index = 1;
            pstmt = connection.prepareStatement(sql);
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            resultSet = pstmt.executeQuery();
            ResultSetMetaData metaData = resultSet.getMetaData();
            int cols_len = metaData.getColumnCount();
            while (resultSet.next()) {
                //  通过反射机制创建一个实例  
                //  cls.class;
                resultObject = cls.newInstance();
                for (int i = 0; i < cols_len; i++) {
                    String cols_name = metaData.getColumnName(i + 1);
                    Object cols_value = resultSet.getObject(cols_name);
                    if (cols_value == null) {
                        cols_value = "";
                    }
                    Field field = cls.getDeclaredField(cols_name);
                    field.setAccessible(true); //打开javabean的访问权限  
                    field.set(resultObject, cols_value);
                }
            }
            return resultObject;
        }
    
        /**
         * 通过反射机制查询多条记录
         *
         * @param sql
         * @param params
         * @param cls
         * @return
         * @throws Exception
         */
        public <T> List<T> findMoreRefResult(String sql, List<Object> params, Class<T> cls) throws Exception {
            List<T> list = new ArrayList<T>();
            int index = 1;
            pstmt = connection.prepareStatement(sql);
            if (params != null && !params.isEmpty()) {
                for (int i = 0; i < params.size(); i++) {
                    pstmt.setObject(index++, params.get(i));
                }
            }
            resultSet = pstmt.executeQuery();
            ResultSetMetaData metaData = resultSet.getMetaData();
            int cols_len = metaData.getColumnCount();
            while (resultSet.next()) {
                //通过反射机制创建一个实例  
                T resultObject = cls.newInstance();
                for (int i = 0; i < cols_len; i++) {
                    String cols_name = metaData.getColumnName(i + 1);
                    Object cols_value = resultSet.getObject(cols_name);
                    if (cols_value == null) {
                        cols_value = "";
                    }
                    Field field = cls.getDeclaredField(cols_name);
                    field.setAccessible(true); //打开javabean的访问权限  
                    field.set(resultObject, cols_value);
                }
                list.add(resultObject);
            }
            return list;
        }
    
        /**
         * 释放数据库连接
         */
        public void releaseConn() {
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    
    }
  • 相关阅读:
    深度学习(dropout)
    centos 常见软件安装
    最近读的书 与论文
    如何理解反向传播 Backpropagation 梯度下降算法要点
    ubuntu 15 安装cuda,开启GPU加速
    快速排序算法
    Linux网络中接收 "二进制" 流的那些事 --- 就recv的返回值和strlen库函数进行对话
    linux源码升级编译内核
    C/C++中慎用宏(#define)
    Qt之hello world
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4352928.html
Copyright © 2020-2023  润新知