Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MySQL CallableStatement.getObject的行为不一致_Java_Mysql_Jdbc_Callable Statement_Out Parameters - Fatal编程技术网

Java MySQL CallableStatement.getObject的行为不一致

Java MySQL CallableStatement.getObject的行为不一致,java,mysql,jdbc,callable-statement,out-parameters,Java,Mysql,Jdbc,Callable Statement,Out Parameters,在我的开发系统上的MySQL实例中,我在测试模式中定义了以下简单过程,\u test\u jdbc\u inconsistency CREATE PROCEDURE _test_jdbc_inconsistency.proc(IN param1 boolean, OUT param2 boolean) BEGIN IF (param1 IS NULL) THEN SET param2 = NULL; ELSE set param2 = not param1; EN

在我的开发系统上的MySQL实例中,我在测试模式中定义了以下简单过程,
\u test\u jdbc\u inconsistency

CREATE PROCEDURE _test_jdbc_inconsistency.proc(IN param1 boolean, OUT param2 boolean)
BEGIN
  IF (param1 IS NULL)
  THEN
    SET param2 = NULL;
  ELSE
    set param2 = not param1;
  END IF;
END
但令我惊讶的是,下面的简单测试失败了

@Test(dataProvider = "connectionPool")
public void testJdbcInconsitencyOutParameterType(Connection con) throws SQLException, IOException
{
    con.setCatalog("_test_jdbc_inconsistency");
    try (CallableStatement statement = con.prepareCall("{call proc(?, ?)}"))
    {
        statement.setInt("param1", 5);
        statement.registerOutParameter("param2", Types.INTEGER);
        statement.execute();

        assertTrue(statement.getObject(2) instanceof Integer);
        assertEquals(statement.getObject(2), 25);
        assertTrue(statement.getObject("param2") instanceof Integer);
    }
}
在最后一个
assertTrue
语句中标记不一致性;调用接受参数索引的
CallableStatement.getObject
重载时,返回预期类型的结果(
java.lang.Integer
),另一个接受参数名称的重载返回类型不一致的结果
java.lang.Long
。由于我使用的是有符号整数,并且基于许多关于在JDBC中使用out参数的说明,特别是由提供的说明,所以这个过程似乎是正确的,这看起来像是一种不一致的行为

还有谁能证实这个问题吗

我的环境:

  • Windows 8.1 x64
  • JDK 1.8.0_45(x64/x86)
  • MySQL连接器/J 5.1.34
  • MySQL服务器5.6.24
  • TestNG 6.9.5

由于没有任何评论或回应,我向MySQL错误数据库报告了这一情况,并将其作为错误接受和验证。 以下是相关人士的问题链接:


由于没有任何评论或回应,我向MySQL错误数据库报告了这一情况,并将其作为错误接受和验证。 以下是相关人士的问题链接: