这个查询的是mysql的数据库。

目的是实现定时从某一个数据库里提取想要的数据。这个代码,是学习java的时候,比较基础的数据库连接问题了。简单做个笔记,巩固自己的基础,也希望有大神发现不妥之处,或者可优化的地方,能够提出来,谢谢!

连接源数据库:


    /**
     * 数据源
     */
    public void ImportDataByJdbc() {

        long startTime = System.currentTimeMillis();    //获取开始时间

        Connection con = null;// 创建一个数据库连接
        PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result = null;// 创建一个结果集对象
        try {
            Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
            System.out.println("开始尝试连接cms数据库!");
            String url = "jdbc:mysql://13.11.71.43:3306/test?characterEncoding=utf-8&useSSL=false";//这是我测试用的源数据库连接
            String user = "root";// 用户名,系统默认的账户名
            String password = "123456";// 你安装时选设置的密码
            con = DriverManager.getConnection(url, user, password);// 获取连接
            System.out.println("cms连接成功!");

            String sql = "select id , name , password , age , sex , phone , remarks from sys_user";
            pre = con.prepareStatement(sql);// 实例化预编译语句
            result = pre.executeQuery();// 执行查询

            //数据存入目标库处理
            importData(result);

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                // 注意关闭的顺序,最后使用的最先关闭
                if (result != null)
                    result.close();
                if (pre != null)
                    pre.close();
                if (con != null)
                    con.close();
                System.out.println("cms数据库连接已关闭!\n");

                long endTime = System.currentTimeMillis();    //获取结束时间
                System.out.println("程序运行时间:" + (endTime - startTime) + "ms \n");    //输出程序运行时间

            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

 连接目标数据库,进行数据分许、整理,入库。

 /**
     * 目标库
     *
     * @param
     * @return
     */
    public String importData(ResultSet result) {

        Connection con = null;// 创建一个数据库连接
        PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement
        ResultSet result2 = null;// 创建一个结果集对象
        Timestamp currentTime = new Timestamp(System.currentTimeMillis());
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = formatter.format(currentTime);
        try {
            Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序
            System.out.println("开始尝试连接omp数据库!");
            String url = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8&useSSL=false";
            String user = "root";// 用户名,系统默认的账户名
            String password = "123456";// 你安装时选设置的密码
            con = DriverManager.getConnection(url, user, password);// 获取连接
            System.out.println("omp连接成功!");

            int num = 0;
            while (result.next()) {

                //在此处 可做数据处理

                String sql = "insert into sys_user(id,name,password,age,sex,phone,remarks) " +
                        " values( " +
                        result.getString("id") + ",'" +
                        result.getString("name") + "','" +
                        result.getString("password") + "'," +
                        result.getString("age") + ",'" +
                        result.getString("sex") + "','" +
                        result.getString("phone") + "','" +
                        result.getString("remarks") + "' )";// 预编译语句
                pre = con.prepareStatement(sql);// 实例化预编译语句
                pre.execute();
                pre.close();
                num = num + 1;
            }
            System.out.println("成功插入(" + num + ")条数据");

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                // 逐一将上面的几个对象关闭,因为不关闭的话会影响性能、并且占用资源
                // 注意关闭的顺序,最后使用的最先关闭
                if (result != null)
                    result.close();
                if (pre != null)
                    pre.close();
                if (con != null)
                    con.close();
                System.out.println("omp数据库连接已关闭!");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return null;
    }

最后,调取  ImportDataByJdbc() 就可以了。

其中有许多需要注意的事项,在进行数据处理时,要注意唯一字段在insert into 时会出现错误,要做过滤处理。

一切美好的遇见都是命中注定!!!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐