问题描述及原因:
rs.getInt方法,若数据库中记录的数值为null,getInt返回的是数值“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"));”
执行后,category的isLeaf属性不可能为NULL
如想让category的isLeaf属性有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方法得到具体的值。
相关推荐
在Java中,可以通过`CallableStatement`的`registerOutParameter(int index, int type)`方法注册一个输出参数,然后使用`getXXX()`方法(与参数类型匹配的方法,如`getInt()`、`getString()`等)获取返回值。...
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`这个压缩包可能包含了相关...
- **获取返回值**:执行后,可以通过`CallableStatement.getInt(index)`等方法获取输出参数的值。 - **关闭资源**:记得在完成操作后,关闭`ResultSet`、`CallableStatement`和`Connection`以释放资源。 2. **...
在使用 getXXX 方法时,JDBC 驱动程序会试图将基本数据转换成指定 Java 类型,然后返回适合的 Java 值。例如,如果 getXXX 方法为 getString,而基本数据库中数据类型为 VARCHAR,则 JDBC 驱动程序将把 VARCHAR 转换...
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 ...
博文链接提供的内容可能更深入地解释了如何在实际项目中使用ResultSet,包括一些最佳实践和常见问题的解决方案。如果想深入了解ResultSet的用法,可以参考该博客。标签中的“源码”可能意味着会有示例代码,而“工具...
### Java一次性查询处理几百万数据解决方法 在Java开发中,处理大数据量是常见的需求之一,特别是当数据规模达到几百万级别时,如何高效、稳定地处理这些数据变得尤为重要。本文将详细介绍一种Java一次性查询处理几...
product.setId(rs.getInt("id")); product.setName(rs.getString("name")); product.setPrice(rs.getDouble("price")); // 根据实际情况添加其他字段 productList.add(product); } return productList; } ```...
6. 获取结果,如果存储过程有返回值,可以使用`getXXX`方法(如getInt, getString等)获取输出参数值。如果有结果集,可以迭代处理。 接着,函数在数据库中类似于可重用的计算单元,返回一个值。调用函数的方法与...
2. 兼容问题及解决方法:人大金仓数据库90%以上语法兼容oracle,因此适配的时候数据库访问对象获取到的dbType = “oracle”,并用originDBType = “jc”进行区分。 解决方法: * 金仓数据库不支持批量插入insert ...
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重叠遮盖问题是一个常见的问题,而解决这个问题需要了解Fragment的生命周期和状态保存机制。下面将详细介绍Fragment重叠遮盖问题的成因和解决办法...
Java 对数据库操作常用对象及方法整合 Java 语言中经常使用的数据库操作对象和方法整合,主要包括 DatabaseMetaData、ResultSet、ResultSetMetaData 等对象。 DatabaseMetaData 对象 DatabaseMetaData 对象提供了...
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 ...
- `getInt(int columnIndex)`:根据列索引获取整数值。 **4.2 ResultSet的特性** - 可滚动:支持向前和向后移动。 - 可更新:允许修改结果集中的数据。 #### 五、JDBC中数据类型详解 **5.1 基本数据类型** - `...
select (2)使用SQLiteOpenHelper接口 SQLite 查询接口 query 返回值 Cursor : 查询结果结构的游标,它指向一个记录。 通过moveToNext指向下一个记录。 根据Key值和类型,使用getInt getString 等获取数据。 实验 ...
输出参数用`registerOutParameter`方法注册,返回值则通过`getXXX`方法获取(这里的`XXX`取决于参数类型,如`getInt`、`getString`等)。 4. 处理多结果集 有些存储过程可能返回多个结果集,可以使用`...