java - 如何在 Java 中插入 Oracle 日期数据类型
问题描述
大家好,
我是java的新手。我试图创建这样一个数据管道,将表从 1 个源复制到不同的服务器和数据库。它适用于字符串和数字,但我停留在日期数据类型。我在线程“main” java.sql.SQLException: ORA-01843: not a valid month 中遇到异常。
我不知道如何在 java 中更改日期格式或使用日期数据类型。
这里有详细信息:Oracle 10g (Svr1) & 11g (Svr2), java 8 with ojdbc14.jar
表的数据库
Table = LAB
field = ID(INT), LAB_DESC(VARCHAR2, 50), LAB_DATE(DATE)
Java 代码
//========= Bismillah Arrahman Arrahiem =============//
//============== DARI SINI ========================================//
// ** ** ** **
// **** ** ** ** **** ** ** ** **
// **** ** ** ** * * ** ** ** **
// ********** ** ****************************
// *
//
//========================= LAB =============================//
package simpledtpipeline;
import java.sql.*;
public class SimpleDTpipeline {
public static void main(String[] args)
//========= Bismillah =============//
throws SQLException, ClassNotFoundException, Exception {
// Load the JDBC driver
Class.forName("oracle.jdbc.driver.OracleDriver");
System.out.println("Driver loaded");
//======================================================//
// Connect to a database
Connection connectionServer1 = DriverManager.getConnection
("jdbc:oracle:thin:@192.168.7.1:1521:dbone", "user", "pass123");
System.out.println("Database 192.168.7.1 connected");
//======================================================//
Connection connectionServer2 = DriverManager.getConnection
("jdbc:oracle:thin:@192.168.7.2:1521:dbtwo", "user2", "pass789");
System.out.println("Database 192.168.7.2 connected");
//
//========================= LAB =============================//
Statement SelectLAB = connectionServer1.createStatement();
// Execute a statement
ResultSet FetchLAB = SelectLAB.executeQuery
("SELECT ID, LAB_DESC, LAB_DATE from LAB ");
//*****************************************************************//
PreparedStatement InsertLAB = connectionServer2.prepareStatement("INSERT INTO LAB "
+ "(ID, LAB_DESC, LAB_DATE) VALUES (?,?, TO_DATE(?,'MM/DD/YYYY')");
while (FetchLAB.next()){
InsertLAB.setInt(1,FetchLAB.getInt("ID"));
InsertLAB.setString(2,FetchLAB.getString("LAB_DESC"));
InsertLAB.setString(3,FetchLAB.getString("LAB_DATE"));
InsertLAB.execute();
}
//======================================================//
//
// Close the connection //
connectionServer1.close();
connectionServer2.close();
}
}
解决方案
推荐阅读
- java - 有没有办法制作用户列表?
- java - 动态调用静态方法而不使用反射
- java - 如何在 Spring MVC 应用程序中实现 Spring 安全性?
- javascript - 在javascript(laravel)中获取php数组
- sql - Oracle SQL - 使用 select 为某些行生成聚合行
- sql-server-2008 - 如何在一长串文本字段中搜索特定单词并计算它们 - sqlserver
- java - 重写 clone() 方法时,为什么需要将其声明为 public?
- vue.js - 为什么 html 显示计算属性返回的对象是“未定义的”?
- parameters - SSIS - 通过所有项目更改对变量/参数的引用
- .net - 如何在 net472 上正确打包和使用具有多个运行时的 .NET Standard 库?