一.源码
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,重新运行。


原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/database/267234.html