我正在格式化一个ResultSet
以输出到CSV文件。因此,我真的不关心结果集的Java类型,除了可能知道它是文本还是数字。
JDBC是否保证getString将始终给出值的字符串表示,至少对于单个值(我不需要关心java.sql.Types.ARRAY
、java.sql.Types.JAVA_OBJECT
和其他几个值)。
例如,给定的resultSetMetaData.getColumnType(i)
是Types.FLOAT
或Types.BIGDECIMAL
。rs.GetString(i)
总是会输出一些字符串吗?
也就是说,有没有这样的情况: getString会抛出SQLException或返回null,而getXXX会给我这个值?
发布于 2010-01-15 21:39:25
java.lang.String
是最后一个类--它永远不能有一个子类。因此,任何返回String
的方法要么返回java.lang.String
类的实例,要么返回null
,或者抛出异常。
至于转换,取决于JDBC驱动程序是否允许您从非字符串类型进行转换。我怀疑许多人会对此有疑问。
我建议你这样做:
Object item = resultSet.getObject(i);
String strValue = (item == null ? null : item.toString());
这应该更健壮,因为getObject()
总是做明智的事情。
https://stackoverflow.com/questions/2071845
复制相似问题