无法在数据库中插入不同的数据类型值



我正试图将数据从一个数据库迁移到另一个数据库,但由于无法正确处理数据类型而无法迁移。

目标数据库的架构

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的新手,无法正确调试,可能是我错过了一些非常基本的东西。任何帮助都将不胜感激。

行中似乎有问题ps.setInt(2, contracts[i].Product_code)

您正在预编译的语句中插入null,groovy无法解析类型,所以它抛出了关于MissingMethodException的异常。

再见尝试:

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

它会告诉groovy,您传递的值是Integer类型,即使它是null。

您也可以使用ResultSet的方法,如getLonggetInt。它也应该能解决你的问题。

有关这些方法的详细信息:http://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html#getInt%28java.lang.String%29

相关内容

  • 没有找到相关文章

最新更新