首页 > 解决方案 > 如何在 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();
}
       
    }

标签: javaoracle

解决方案



推荐阅读