这个查询的是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 时会出现错误,要做过滤处理。
一切美好的遇见都是命中注定!!!