我正在尝试将数据从一个数据库迁移到另一个数据库但由于无法正确处理数据类型而无法执行此操作。
目标数据库架构
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
是来自其他数据库的我的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的新手,无法正常调试,可能是我遗漏了一些非常基本的东西。 任何帮助将不胜感激。
答案 0 :(得分:0)
看起来有问题
ps.setInt(2, contracts[i].Product_code)
您正在插入到preprared语句null并且groovy无法解析类型,因此它会抛出有关MissingMethodException的异常。
Maybye尝试:
ps.setInt(2, contracts[i].Product_code as Integer)
它会告诉groovy你传递的值是Integer的类型,即使它是null。
您还可以使用ResultSet的方法,例如getLong
或getInt
。它也应该解决你的问题。
有关这些方法的更多信息: http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getInt%28java.lang.String%29