2014-09-24 63 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是我的一些其他數據庫的結果集。

執行後我得到這個異常。

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和無法正確調試,可能是我缺少一些非常基本的東西。 任何幫助將不勝感激。

+0

問題是由於ResultSet中Null值。 – Sajjad 2014-09-24 11:25:42

回答

0

貌似存在線路問題 ps.setInt(2, contracts[i].Product_code)

要插入的preprared聲明零和Groovy所以它拋出異常有關MissingMethodException無法解析類型。

Maybye嘗試:

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

它會告訴時髦的是看重你逝去的是整型的類型,即使是零。

您還可以使用ResultSet的方法,如getLonggetInt。它也應該解決你的問題。

有關這些方法的更多信息: http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getInt%28java.lang.String%29

+0

是的你是對的,因爲Null,插入值正確解決了這個問題。 – Sajjad 2014-09-26 13:00:10

+0

但是,如果您傳遞null,例如擦除列值,則會引發異常。 – 2014-09-26 13:13:06

+0

是的,其實resultSet沒有得到填充,它試圖將Null值解析爲整數。 確定沒有空值後,問題就解決了。 – Sajjad 2014-09-26 13:23:00

相關問題