JDBC ResultSet getString是否总是返回字符串表示形式?
我正在格式化JDBC ResultSet getString是否总是返回字符串表示形式?,jdbc,Jdbc,我正在格式化ResultSet以输出到CSV文件。因此,除了知道结果集是文本还是数字之外,我真的不关心结果集的Java类型 JDBC是否保证getString总是给出值的字符串表示,至少是单个值(我不需要关心java.sql.Types.ARRAY,java.sql.Types.java\u OBJECT和其他一些) e、 g.给定resultSetMetaData.getColumnType(i)是Types.FLOAT或Types.BIGDECIMAL。rs.GetString(i)是否总是
ResultSet
以输出到CSV文件。因此,除了知道结果集是文本还是数字之外,我真的不关心结果集的Java类型
JDBC是否保证getString总是给出值的字符串表示,至少是单个值(我不需要关心java.sql.Types.ARRAY
,java.sql.Types.java\u OBJECT
和其他一些)
e、 g.给定resultSetMetaData.getColumnType(i)
是Types.FLOAT
或Types.BIGDECIMAL
。rs.GetString(i)
是否总是产生一些字符串
i、 e.当getXXX给我值时,getString是否会抛出SQLException或返回null?
java.lang.String
是最后一个类-它永远不能有子类。因此,任何返回String
的方法要么返回类java.lang.String
的实例,要么返回null
,要么抛出异常
至于转换,如果JDBC驱动程序允许您从非字符串类型转换,则由JDBC驱动程序决定。我怀疑很多人都会对此有意见
我建议您改为这样做:
Object item = resultSet.getObject(i);
String strValue = (item == null ? null : item.toString());
这应该更加健壮,因为getObject()
将始终执行明智的操作。是的,请检查以下内容:
JDBC允许很大的自由度,您可以使用哪些getXXX方法来检索不同的SQL类型。例如,getInt方法可用于检索任何数字或字符类型。它检索的数据将转换为int;也就是说,如果SQL类型是VARCHAR,JDBC将尝试从VARCHAR中解析一个整数。但是,建议使用getInt方法仅检索SQL整数类型,并且它不能用于SQL类型BINARY、VARBINARY、LONGVARBINARY、DATE、TIME或TIMESTAMP
但是要小心,不同的JDBC驱动程序可能会产生不同的结果。这就是问题所在,当getXXX给我值时,getString是否会抛出SQLException或返回null?请更新链接指南:
注意,尽管建议使用getString方法检索SQL类型CHAR和VARCHAR,可以使用它检索任何基本SQL类型。使用getString获取所有值非常有用,但也有其局限性。例如,如果用于检索数值类型,则getString将数值转换为Java字符串对象,并且必须将该值转换回数值类型,然后才能将其作为数字进行操作。如果该值被视为字符串,则没有缺点。