如何将 Oracle Number(19) 转换为 Java Long?
How to Convert Oracle Number(19) to Java Long?
如何将 Oracle Number(19) 转换为 Java Long ?
(Number(19) 表示等同于 java 长按这个 https://docs.oracle.com/cd/E19501-01/819-3659/gcmaz/)
我不想使用 Long.parseLong 或 Long.valeOf,因为它们都会抛出异常。
这是我在数据库中的数据
ColName (Foreign key, Nullable)
1
null
100325
null
这是我试过的替代方法
1) program.setXX(rs.getLong("colName"))
它 returns 值 (1,0,100325,0)。 空值替换为 0
2) program.setXX((Long)rs.getObject("colName"));
3) program.setXXX(Long.parseLong(rs.getString("colName")));
4) program.setXXX(Long.valueOf(rs.getString("colName")));
以上 3 个抛出异常,而我的 POJO setter 接受 Long。
我期待 (1,null,100325,null) 这样的结果,Java应该持有吧
我在 spring JDBC 模板 RowMapper 中这样做,
是否有替代上述步骤的方法? 一些 Apache Utility 方法或 Spring 内置方法。
要么捕获异常并以适合您的应用程序的方式处理它(例如将 long 值设置为 0),要么在使用 longValue() 之前先检查该值是否为 null。
Long value = ....
long result;
if (value == null)
{
// Deal with this situation in a way appropriate for your application
}
else
{
result = value.longValue();
// Use the result
}
编辑:
我想我理解你的困惑。
在Java中,基本类型是int
、boolean
或long
。这些是本机类型,不能存储空值。只有像 String
、Long
(注意大写字母)或 Scanner
这样的对象类型可以存储空值。因此,如果您有一个接受 long
的函数,那么您将无法将空值传递给它,因为 long
s 无法存储空值。要么接受long
的函数需要修改为接受一个对象,比如Long
,要么你需要自己处理null
的情况。
别无选择。
使用
ResultSet rs;
...
Long aLong = rs.getLong("MY_COLUMN");
if ( rs.wasNull() ) {
aLong = null;
}
此示例假定至少 Java 5(自动装箱)。如果您不在 Java 5,您需要做更多的工作才能将多头变成多头。
另外,请注意,可以在 Oracle NUMBER(19) 字段中存储超过 Java 的最大值很长时间的数字。
如何将 Oracle Number(19) 转换为 Java Long ?
(Number(19) 表示等同于 java 长按这个 https://docs.oracle.com/cd/E19501-01/819-3659/gcmaz/)
我不想使用 Long.parseLong 或 Long.valeOf,因为它们都会抛出异常。
这是我在数据库中的数据
ColName (Foreign key, Nullable)
1
null
100325
null
这是我试过的替代方法
1) program.setXX(rs.getLong("colName"))
它 returns 值 (1,0,100325,0)。 空值替换为 0
2) program.setXX((Long)rs.getObject("colName"));
3) program.setXXX(Long.parseLong(rs.getString("colName")));
4) program.setXXX(Long.valueOf(rs.getString("colName")));
以上 3 个抛出异常,而我的 POJO setter 接受 Long。
我期待 (1,null,100325,null) 这样的结果,Java应该持有吧
我在 spring JDBC 模板 RowMapper 中这样做,
是否有替代上述步骤的方法? 一些 Apache Utility 方法或 Spring 内置方法。
要么捕获异常并以适合您的应用程序的方式处理它(例如将 long 值设置为 0),要么在使用 longValue() 之前先检查该值是否为 null。
Long value = ....
long result;
if (value == null)
{
// Deal with this situation in a way appropriate for your application
}
else
{
result = value.longValue();
// Use the result
}
编辑:
我想我理解你的困惑。
在Java中,基本类型是int
、boolean
或long
。这些是本机类型,不能存储空值。只有像 String
、Long
(注意大写字母)或 Scanner
这样的对象类型可以存储空值。因此,如果您有一个接受 long
的函数,那么您将无法将空值传递给它,因为 long
s 无法存储空值。要么接受long
的函数需要修改为接受一个对象,比如Long
,要么你需要自己处理null
的情况。
别无选择。
使用
ResultSet rs;
...
Long aLong = rs.getLong("MY_COLUMN");
if ( rs.wasNull() ) {
aLong = null;
}
此示例假定至少 Java 5(自动装箱)。如果您不在 Java 5,您需要做更多的工作才能将多头变成多头。
另外,请注意,可以在 Oracle NUMBER(19) 字段中存储超过 Java 的最大值很长时间的数字。