Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.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 ResultSet的奇怪行为_Java_Mysql - Fatal编程技术网

Java ResultSet的奇怪行为

Java ResultSet的奇怪行为,java,mysql,Java,Mysql,你好,朋友们,希望你们过得愉快,我在用Java从Mysql数据库获取数据时遇到了一个非常奇怪的问题,方法如下: ResultSet tableExistence; . . . while (tableExistence.next()) { System.out.println("before : "+tableExistence.getInt(MyHttpServer.COL_ID)); if(tableExistence.getStri

你好,朋友们,希望你们过得愉快,我在用Java从Mysql数据库获取数据时遇到了一个非常奇怪的问题,方法如下:

 ResultSet tableExistence;
 .
 .
 .

    while (tableExistence.next()) {

          System.out.println("before : "+tableExistence.getInt(MyHttpServer.COL_ID));

        if(tableExistence.getString(MyHttpServer.COL_STATUS).equals(MyHttpServer.STATUS_AVAILABLE)){

          System.out.println("after : "+tableExistence.getInt(MyHttpServer.COL_ID));    

       ...
 }
奇怪的是,“before”的值是id的正确值,但是在if方法之后,“after”的值返回类似1234125151231的值,知道为什么会出现这个问题吗

各州:

这些文档确实说“为了最大的可移植性,每行中的结果集列应该按从左到右的顺序读取,并且每列只应该读取一次。”

所以从技术上讲,这是合理的。然而:

  • 实际上,我希望任何现代的、支持良好的数据库都允许您以任意顺序多次访问这些列
  • 只是返回一个不正确的值,而不是抛出一个异常来表明问题相当严重
一种解释可能是,如果您正在获取clob或blob,那么驱动程序可能会决定在这种情况下“仅从左到右”更为合理,以避免在内存中保留太多数据。不过,它只是返回损坏的数据,这仍然不太好

因此,虽然这是一个可能的答案,但我也会:

  • 检查连接和
    ResultSet
    是否正在从多个线程同时使用
  • 检查您使用的是最新版本的MySQL驱动程序

文档确实说“为了最大的可移植性,每一行中的结果集列应该按从左到右的顺序读取,并且每一列只应该读取一次。”无可否认,这仍然有些令人惊讶,但是……哇,在java中使用mysql已经两年了,这是我第一次看到这样的事情!在最新版本的JDBC中,问题可能更为突出。无论如何,这看起来就是答案!!!感谢将其作为答案发布,以便我可以接受感谢阿洛塔我从未在数据库中使用blob或clob,我怀疑它与我使用的jdbc驱动程序或hikkariCP有一些问题。谢谢大家。很明显,问题出在JDBC5.1.5上,改成了5.1.10away@iamreza:太好了!很高兴听到:)