2014-09-24 1 views
1

한 데이터베이스에서 다른 데이터베이스로 데이터를 마이그레이션하려고하지만 데이터 유형을 올바르게 처리 할 수 ​​없어서 그렇게 할 수 없습니다. 나는 값을 삽입하고 방법 대상 데이터베이스 여기데이터베이스에 다른 데이터 유형 값을 삽입 할 수 없습니다.

CREATE TABLE `Report_aggregation` (

    `Supplier` varchar(255) DEFAULT NULL, 
    `Product_code` int(11) DEFAULT NULL, 
    `Product_Name` varchar(255) DEFAULT NULL, 
    `Balance_on_Hand` int(11) DEFAULT NULL, 
    `Pending` int(11) DEFAULT NULL, 
    `Sale_Yesterday` int(11) DEFAULT NULL, 
    `Stock_day` decimal(10,0) DEFAULT NULL, 
    `Sale_avg` decimal(10,0) DEFAULT NULL, 
    `Stock_day_avg` varchar(255) DEFAULT NULL, 
    `Lead_time` int(11) DEFAULT NULL, 
    `Frequency_per_week` int(11) DEFAULT NULL, 
    `Saftey_stock` int(11) DEFAULT NULL, 
    `Forecast_order_qty` int(11) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

SET FOREIGN_KEY_CHECKS = 1; 

스키마입니다.

setValues: { ps, i -> 
        ps.setString(1, contracts[i].Supplier.toString()) 
        ps.setInt(2, contracts[i].Product_code) 
        ps.setString(3, contracts[i].Product_Name.toString()) 
        ps.setInt(4, contracts[i].Balance_on_Hand) 
        ps.setInt(5, contracts[i].Pending) 
        ps.setInt(6, contracts[i].Sale_Yesterday) 
        ps.setDecimal(7, contracts[i].Stock_day) 
        ps.setDecimal(8, contracts[i].Sale_avg) 
        ps.setString(9, contracts[i].Stock_day_avg.toString()) 
        ps.setInt(10, contracts[i].Lead_time) 
        ps.setInt(11, contracts[i].Frequency_per_week) 
        ps.setInt(12, contracts[i].Saftey_stock) 
        ps.setInt(13, contracts[i].Forecast_order_qty) 
       } 

여기에서 contracts은 다른 데이터베이스의 my resultSet입니다.

실행시이 예외가 발생합니다.

groovy.lang.MissingMethodException: No signature of method: com.jolbox.bonecp.PreparedStatementHandle.setInt() is applicable for argument types: (java.lang.Integer, null) values: [2, null] 

저는 Groovy를 처음 사용하고 제대로 디버깅 할 수 없기 때문에 매우 기본적인 것이 누락되었을 수 있습니다. 도움을 주시면 감사하겠습니다. 당신이 MissingMethodException이에 대해 예외가 발생하므로 유형을 확인할 수없는 preprared 문 널 (null)와 그루비에 삽입하는 ps.setInt(2, contracts[i].Product_code)

라인에 문제가있는 것처럼

+0

문제는 결과 집합 null 값 때문. – Sajjad

답변

0

보인다.

Maybye의 시도는 :

ps.setInt(2, contracts[i].Product_code as Integer)

그것은 null의 경우에도, 정수의 종류 당신이 전달하는 가치를 끝내 말할 것이다.

getLong 또는 getInt과 같은 ResultSet의 메서드를 사용할 수도 있습니다. 그것은 당신의 문제도 해결해야합니다. 이러한 방법에 대한

더 많은 정보 : http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getInt%28java.lang.String%29

+0

네, Null 때문에이 문제를 적절히 해결 한 값을 삽입하는 것이 옳습니다. – Sajjad

+0

그러나 null을 전달하면 (예 : 열 값 지우기) 예외가 발생합니다. –

+0

실제로 resultSet이 채워지지 않고 Null 값을 정수로 변환하려고 시도하고있었습니다. Null이 없는지 확인한 후에 문제가 해결되었습니다. – Sajjad

관련 문제