`
hyz301
  • 浏览: 376174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

rs返回值的问题:getInt方法返回的是数值“0”的解决办法

阅读更多

问题描述及原因:

rs.getInt方法,若数据库中记录的数值为nullgetInt返回的是数值“0”,而不是null

long java.sql.ResultSet.getLong(String columnLabel) 
int java.sql.ResultSet.getInt(String columnLabel)

 等均为:若数据库中记录的数值为null,返回数值“0”,而不是null”

因此,

“category.setIsLeaf(rs.getInt("IS_LEAF"));”

 执行后,categoryisLeaf属性不可能为NULL

如想让categoryisLeaf属性有NULL值,就需要其它处理了

jdk中的相关解释:

int java.sql.ResultSet.getInt(String columnLabel) throws SQLException

Retrieves the value of the designated column in the current row of this ResultSet object as an int in the Java programming language.

Parameters:

columnLabel the label for the column specified with the SQL AS clause. If the SQL AS clause was not specified, then the label is the name of the column

Returns:

the column value; if the value is SQL NULL, the value returned is 0

Throws:

SQLException - if the columnLabel is not valid; if a database access error occurs or this method is called on a closed result set

解决方案:

我个人是加上判断,代码如下:

ResultSet rs = statement.executeQuery("select Id from table");
                   Integer id = 0;
                   if (rs.getObject("Id") != null) {
                            id = rs.getInt("Id");
                   } else {
                            id = null;
                   }

 

 通过获取对象来首先判断其是否为空,然后再用对应的getXXX方法得到具体的值。

1
0
分享到:
评论

相关推荐

    Java调用MySQL存储过程并获得返回值的方法

    在Java中,可以通过`CallableStatement`的`registerOutParameter(int index, int type)`方法注册一个输出参数,然后使用`getXXX()`方法(与参数类型匹配的方法,如`getInt()`、`getString()`等)获取返回值。...

    用JDBC操作Oracle的存储过程返回值

    int returnValue = cs.getInt(1); ``` 7. **关闭资源**:在完成操作后,记得关闭`CallableStatement`、`Connection`等资源,以避免资源泄露: ```java cs.close(); conn.close(); ``` 在实际应用中,你可能...

    使用标准输入对话框

    int number = QInputDialog::getInt(this, tr("整数对话框"), tr("请输入整数:"), 0, -100, 100); if (number != QInputDialog::Invalid) { // 处理用户输入的整数 } ``` `inputdialog`这个压缩包可能包含了相关...

    Java调用Oracle存储过程的方法

    - **获取返回值**:执行后,可以通过`CallableStatement.getInt(index)`等方法获取输出参数的值。 - **关闭资源**:记得在完成操作后,关闭`ResultSet`、`CallableStatement`和`Connection`以释放资源。 2. **...

    java数据库连接ResultSet

    在使用 getXXX 方法时,JDBC 驱动程序会试图将基本数据转换成指定 Java 类型,然后返回适合的 Java 值。例如,如果 getXXX 方法为 getString,而基本数据库中数据类型为 VARCHAR,则 JDBC 驱动程序将把 VARCHAR 转换...

    用java调用oracle存储过程

    int id = rs.getInt("I_ID"); String name = rs.getString("I_NAME"); System.out.println("ID: " + id + ", Name: " + name); } } catch (SQLException ex2) { ex2.printStackTrace(); } catch (Exception ...

    10. RS的用法

    博文链接提供的内容可能更深入地解释了如何在实际项目中使用ResultSet,包括一些最佳实践和常见问题的解决方案。如果想深入了解ResultSet的用法,可以参考该博客。标签中的“源码”可能意味着会有示例代码,而“工具...

    java一次性查询处理几百万数据解决方法

    ### Java一次性查询处理几百万数据解决方法 在Java开发中,处理大数据量是常见的需求之一,特别是当数据规模达到几百万级别时,如何高效、稳定地处理这些数据变得尤为重要。本文将详细介绍一种Java一次性查询处理几...

    Java Web应用开发:优化dao层查询方法.docx

    product.setId(rs.getInt("id")); product.setName(rs.getString("name")); product.setPrice(rs.getDouble("price")); // 根据实际情况添加其他字段 productList.add(product); } return productList; } ```...

    jdbc调用存储过程,函数,游标

    6. 获取结果,如果存储过程有返回值,可以使用`getXXX`方法(如getInt, getString等)获取输出参数值。如果有结果集,可以迭代处理。 接着,函数在数据库中类似于可重用的计算单元,返回一个值。调用函数的方法与...

    泛微Ecology E9适配人大金仓数据库说明_v3.docx

    2. 兼容问题及解决方法:人大金仓数据库90%以上语法兼容oracle,因此适配的时候数据库访问对象获取到的dbType = “oracle”,并用originDBType = “jc”进行区分。 解决方法: * 金仓数据库不支持批量插入insert ...

    Oracle存储过程返回结果集

    System.out.println("Employee ID: " + rs.getInt("employee_id") + ", Name: " + rs.getString("first_name") + ", Last Name: " + rs.getString("last_name")); } } catch (SQLException e) { e....

    Android中Fragment 重叠遮盖问题解决办法

    Android中Fragment重叠遮盖问题解决办法 在Android开发中,Fragment重叠遮盖问题是一个常见的问题,而解决这个问题需要了解Fragment的生命周期和状态保存机制。下面将详细介绍Fragment重叠遮盖问题的成因和解决办法...

    java对数据库操作常用对象及方法整合[归类].pdf

    Java 对数据库操作常用对象及方法整合 Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了...

    Java调用带参数的存储过程并返回集合

    int id = rs.getInt("id"); String name = rs.getString("name"); // ... 其他字段 System.out.println("ID: " + id + ", Name: " + name); } rs.close(); cs.close(); conn.close(); ``` 以上就是Java调用...

    程序员需要知道

    ### 知识点详解 ...**解答**: 在 Tomcat 5 中,如果需要处理 URL 中包含的中文参数,可以通过设置 Tomcat 的连接器 (Connector) 来解决编码问题。例如,可以在 `server.xml` 文件中添加如下配置: ```xml ...

    jdbc学习文档

    - `getInt(int columnIndex)`:根据列索引获取整数值。 **4.2 ResultSet的特性** - 可滚动:支持向前和向后移动。 - 可更新:允许修改结果集中的数据。 #### 五、JDBC中数据类型详解 **5.1 基本数据类型** - `...

    Android项目设计与开发:多线程.ppt

    select (2)使用SQLiteOpenHelper接口 SQLite 查询接口 query 返回值 Cursor : 查询结果结构的游标,它指向一个记录。 通过moveToNext指向下一个记录。 根据Key值和类型,使用getInt getString 等获取数据。 实验 ...

    Java调用存储过程

    输出参数用`registerOutParameter`方法注册,返回值则通过`getXXX`方法获取(这里的`XXX`取决于参数类型,如`getInt`、`getString`等)。 4. 处理多结果集 有些存储过程可能返回多个结果集,可以使用`...

Global site tag (gtag.js) - Google Analytics