JDBC操作Mysql 和 Oracel 数据库

public class JdbcUtil {

    //开启连接
    private static Connection getConn() {
            //Oracel连接
	        String driver = "oracle.jdbc.driver.OracleDriver";
	        String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";
            String username = "ZHANG";
	        String password = "Zsq963092066";

	        //mysql连接
//        String driver = "com.mysql.jdbc.Driver";
//        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&serverTimezone=Asia/Shanghai";
//        String username = "root";
//        String password = "root";
        Connection conn = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url, username, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }

    public void createIncrement(String table){
        Connection conn = JdbcUtil.getConn();

    }

    /**
     * 判断数据库表是否存在
     * @param data          数据库名
     * @param tableName     表名
     * @return    true 存在  false 不存在
     */
    public static boolean tables(String data ,String tableName){
        boolean flag=false;
        Connection conn = JdbcUtil.getConn();
        try {
            DatabaseMetaData meta = conn.getMetaData();
            // 第一个参数catalog在MySQL中对应数据库名:michaeldemo
//            ResultSet rsTables = meta.getTables(data, null, tableName,
//                    new String[] { "TABLE" });

            // 第二个参数schemaPattern在ORACLE中对应用户名:ZHANG
             ResultSet rsTables = meta.getTables(null, "ZHANG", tableName,
             new String[] { "TABLE" });
            System.out.println("getTables查询信息如下:");
            while (rsTables.next()) {
                System.out.println("获取的表有    "+rsTables.getString("TABLE_NAME"));
                if(tableName.equals(rsTables.getString("TABLE_NAME"))){
                    flag=true;
                    break;
                }
            }
            rsTables.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            try {
                if (null != conn) {
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return flag;
    }

    /**
     * 插入数据
     * @param columnList  字段集合
     * @param dataList    数据集合
     * @param table       表名
     */
    public static int insert(List<String> columnList, List<List<String>> dataList, String table) throws SQLException {
        Connection conn = getConn();
        conn.setAutoCommit(false);
        int count = 0;
        //拼接处理insert 语句
        String s1 = "insert into " + table + " (id ,";
        StringBuffer sb = new StringBuffer(s1);
        StringBuffer ssb = new StringBuffer("( "+table+"_ID.nextval ,");
        if (columnList != null && columnList.size() > 0) {
            for (String s : columnList) {
                sb.append(s).append(",");
                ssb.append("?").append(",");
            }
        }
        String valu = ssb.substring(0, ssb.lastIndexOf(",")) + ")";   //(?,?,?,?)
        String inse = sb.substring(0, sb.lastIndexOf(",")) + ") values";  //insert into test (id,name,password,phone) values
        StringBuffer sbb = new StringBuffer();
        String sql = sbb.append(inse).append(valu).toString(); //insert into test (id,name,password,phone) values(?,?,?,?)
        //插入语句
        System.out.println(sql);
        PreparedStatement pstmt = null;
        //insertMySql(conn,sql,columnList,dataList);  //mysql插入
        insertOracel(conn,sql,columnList,dataList);  //oracel插入
        return count;
    }

    //Oracel插入
    private static void insertOracel(Connection conn, String sql, List<String> columnList, List<List<String>> dataList) {
        PreparedStatement pstmt = null;
        try {
            pstmt = conn.prepareStatement(sql);
            //循环赋值 插入数据
            for (int j = 0; j < dataList.size(); j++) {
                for (int i = 0; i < columnList.size(); i++) {
                    pstmt.setString(i + 1, dataList.get(j).get(i));
                }
                pstmt.addBatch();
                if(j%300==0){
                    pstmt.executeBatch();
                    conn.commit();
                    pstmt.clearBatch();
                }
            }
            //执行插入语句
            pstmt.executeBatch();
            conn.commit();
            pstmt.clearBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                pstmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    //mysql插入
    public static void insertMySql(Connection conn,String sql ,List<String> columnList, List<List<String>> dataList){
        PreparedStatement pstmt = null;
        try {
            pstmt = conn.prepareStatement(sql);
            //循环赋值 插入数据
            for (int j = 0; j < dataList.size(); j++) {
                for (int i = 0; i < columnList.size(); i++) {
                    pstmt.setString(i + 1, dataList.get(j).get(i));
                }
                pstmt.addBatch();
                if(j%300==0){
                    pstmt.executeBatch();
                    conn.commit();
                    pstmt.clearBatch();
                }
            }
            //执行插入语句
            pstmt.executeBatch();
            conn.commit();
            pstmt.clearBatch();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            try {
                pstmt.close();
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }


    private static void query() {
        Connection conn = getConn();
        String sql = "select * from users";
        PreparedStatement pstmt;
        try {
            pstmt = conn.prepareStatement(sql);
            ResultSet rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println("name: " + rs.getString("username")
                        + " \tpassword: " + rs.getString("password"));
            }
            rs.close();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    private static int update(String oldName, String newPass) {
        Connection conn = getConn();
        int i = 0;
        String sql = "update users set password='" + newPass
                + "' where username='" + oldName + "'";
        PreparedStatement pstmt;
        try {
            pstmt = conn.prepareStatement(sql);
            i = pstmt.executeUpdate();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return i;
    }

    private static int delete(String username) {
        Connection conn = getConn();
        int i = 0;
        String sql = "delete users where username='" + username + "'";
        PreparedStatement pstmt;
        try {
            pstmt = conn.prepareStatement(sql);
            i = pstmt.executeUpdate();
            pstmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return i;
    }

    //创建表
    public static void createTable(String sql) {
        try {
            Connection conn = getConn();
            PreparedStatement preparedStatement = conn.prepareStatement(sql);
            int count = preparedStatement.executeUpdate(sql);
            if (count == 0) {
                System.out.println("创建成功");
            } else {
                System.out.println("创建失败");
            }
            preparedStatement.close();
            conn.close();
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }


    public static void main(String[] args) throws SQLException {

//        String table="zhang123";
//        boolean bool=JdbcUtil.tables("test",table);
//        System.out.println(bool);
        //创建表
			String sql =  "CREATE TABLE Test_Table (" +
                    "ID number(11) primary key," +
                    "Name varchar(50) not null, " +
                    "Value1 varchar(50) not null " +
                    ")";
			createTable(sql);
        //插入
//        List<String> columnList = new ArrayList<>();
//        columnList.add("id");
//        columnList.add("name");
//        columnList.add("password");
//        columnList.add("phone");
//        List<List<String>> dataList = new ArrayList<>();
//        for (int i = 0; i < 10; i++) {
//            List<String> s = new ArrayList<>();
//            s.add(i + 1 + "");
//            s.add("张三" + i);
//            s.add("123456" + i);
//            s.add("17607183394" + i);
//            dataList.add(s);
//        }
//        String table = "test";
//        insert(columnList, dataList, table);
        //更新

        //删除

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值