一.源码
1.方式一((27条消息) java从一个数据库查询数据保存到另一个数据库(MySql)_Klay·的博客-CSDN博客_java从一个数据库导入另一个数据库)
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.text.SimpleDateFormat; public class jdbc { /** * 数据源 */ public void ImportDataByJdbc() { long startTime = System.currentTimeMillis(); //获取开始时间 Connection conn = null;// 创建一个数据库连接 PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement ResultSet result = null;// 创建一个结果集对象 try { Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序 System.out.println("开始尝试连接cms数据库!"); String url = "jdbc:mysql://192.168.0.111:3306/xhc?characterEncoding=utf-8&useSSL=false";//这是我测试用的源数据库连接 String user = "root";// 用户名,系统默认的账户名 String password = "root1234";// 你安装时选设置的密码 conn = DriverManager.getConnection(url, user, password);// 获取连接 System.out.println("cms连接成功!"); String sql = "select id,username,pwd from tb_user"; pre = conn.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 (conn != null) conn.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;// 创建一个结果集对象 try { Class.forName("com.mysql.jdbc.Driver");// 加载mysql驱动程序 System.out.println("开始尝试连接omp数据库!"); String url = "jdbc:mysql://127.0.0.1:3306/db1?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 tb_use(id,username,password) " + " values( " + result.getInt("id") + ",'" + result.getString("username") + "','" + result.getString("pwd") + "' )";// 预编译语句 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; } public static void main(String[] args) { jdbc jc = new jdbc(); jc.ImportDataByJdbc(); } }
2.方式二
package com.itheima.pojo; public class Account { private int id; private String name; private String pwd; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "account{" + "id=" + id + ", name='" + name + '\'' + ", pwd=" + pwd + '}'; } }
package com.itheima.jdbc; import com.itheima.pojo.Account; import org.junit.Test; import java.sql.*; import java.util.ArrayList; import java.util.List; /** * JDBC API 详解:ResultSet */ public class JDBCDemo5_ResultSet { /** * 执行DQL * @throws Exception */ @Test public void testResultSet() throws Exception { //1. 注册驱动 //Class.forName("com.mysql.jdbc.Driver"); //2. 获取连接:如果连接的是外部mysql并且端口是默认的 3306 可以简化书写 String url = "jdbc:mysql://192.168.0.111:3306/xhc?useSSL=false"; String name = "root"; String pwd = "root1234"; Connection conn = DriverManager.getConnection(url, name, pwd); //3. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写 String localurl = "jdbc:mysql://127.0.0.1:3306/db1?useSSL=false"; String localusername = "root"; String localpassword = "123456"; Connection localconn = DriverManager.getConnection(localurl, localusername, localpassword); //4. 定义sql String sql = "select * from tb_user"; //5. 获取statement对象 Statement stmt = conn.createStatement(); Statement localstmt = localconn.createStatement(); List<Account> list = new ArrayList<>(); //5. 执行sql ResultSet rs = stmt.executeQuery(sql); //6.创建集合 //7. 处理结果,遍历rs中的所有数据,光标向下移动一行,并且判断当前行是否有数据 while (rs.next()){ Account account = new Account(); //6.2 获取数据 getXxx() int id = rs.getInt("id"); String username = rs.getString("username"); String password = rs.getString("pwd"); //赋值 account.setId(id); account.setName(username); account.setPwd(password); // 存入集合 list.add(account); } System.out.println(list); for (int i = 0; i < list.size(); i++) { String localsql = "INSERT INTO tb_use(id,username,password) VALUES(\"" + list.get(i).getId() + "\",\"" + list.get(i).getName() + "\",\"" + list.get(i).getPwd() + "\");"; System.out.println(localsql); PreparedStatement pre = null;// 创建预编译语句对象,一般都是用这个而不用Statement pre = localconn.prepareStatement(localsql);// 实例化预编译语句 pre.execute(); pre.close(); } //7. 释放资源 rs.close(); stmt.close(); conn.close(); localstmt.close(); localconn.close(); } }
二.遇到的问题
1.找不到 com.mysql.jdbc.Driver
(1)下载jar包(MySQL :: Begin Your Download)
(2)点击文件->项目结构->库,点击左上角+号,选择java,选择mysql-connector-java-5.1.48.jar,重新运行。