我的数据库中有一列被键入,double
并且我想使用JDBC
ResultSet从中读取值,但是它可能为null。最好的方法是什么?我可以想到三个选项,但似乎没有一个很好。
选项1:不好,因为异常处理冗长而有臭味
double d;
try {
d = rs.getDouble(1);
// do something
} catch(SQLException ex) {
if(rs.wasNull()) {
// do something else
} else {
throw ex;
}
}
选项2:不好,因为两次提取
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = rs.getDouble(1);
// do something
}
选项3:不好,因为Java而不是SQL转换
s = rs.getString(1); // or getObject()
if(s == null) {
// do something else
} else {
double d = Double.parseDouble(s);
// do something
}
关于哪种方法更好的任何建议,或者还有另一种更好的方法?并且请不要说“ Use Hibernate”,这里只限于JDBC代码。
选项1最接近:
double d = rs.getDouble(1);
if (rs.wasNull()) {
// do something
} else {
// use d
}
这不是很好,但这是JDBC。如果该列为空,则将double值视为“错误”,因此,wasNull()
每次读取数据库中可为空的原语时,都应检查使用。
编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答问题。 我对我的一个本地C类中的空值“this”感到困惑。 我这样声明stdafx.h中的类: 然后像这样stdafx.cpp实现它: 调试器阻塞了这个方法,并抛出一个“写访问冲突”:消息还说:“这是nullptr”。 这怎么可能?我该如何解决这个问题?下面是完整的“归档”标题和定义。 备案. h: 归档.cpp
我收到一个错误消息,说从数据库返回的结果集内缺少某个< code>string。现在我有一个问题:我怎样才能看到结果集中的内容? google上可用的示例是显式方法,如或,但这些方法假设您知道您在寻找什么。我真正需要的是-查看中有哪些元素可用。 就像当我发出命令时,它会向我显示某种带有变量名的映射——这可能吗? 编辑: 如果有用,下面是一段代码: 错误:
问题内容: 我在ResultSet上经历了一段非常糟糕的时光,它在while循环中关闭以迭代此ResultSet。我知道ResultSet关闭的确切行,但是我不知道为什么。 我用注释标记了该行,之后该行关闭了。上面示例中使用的其他方法,构造函数等都经过了正常测试。有谁知道为什么调用第二个方法会关闭第一个方法的线索? 问题答案: 问题在于,每个执行的语句只能维护一组。既然你共享同为你的两个方法,在该
我在使用Spring通过java读取yaml时遇到了一个问题。让我先展示代码 我的yaml文件: spring上下文xml还具有以下功能: 在这里面,它说,所有的东西都是作为一个字符串而不是一个地图来阅读的。是否有其他类支持读取Yaml文件的方式:Spring boot-inject map from application.yml 还是我对YamlPropertiesFactoryBean的理解
问题内容: 数据库具有UTC中的数据,当我尝试获取数据时 这有什么问题吗? 问题答案: 您的DateFormat实例很可能以本地时间显示该值。在显示您的价值时,尝试一下: 编辑:对您的评论: 如果我使用GMT,那在SimpleDateFormat中会是一个问题吗? SimpleDateFormat可以使用常规时区(GMT +/- n),RFC822和文本(如JavaDoc所述,“如果它们具有名称”