2011-07-14 34 views
4

我需要根据JDBC调用生成的结果集来解析通常包含整数的数据库列的值。但是,列中的一个特定行有两个整数(即“48,103”)。该列上resultSet.getInt()的返回值是什么?resultSet.getInt()返回一个包含两个整数的字符串的值

+0

数据库中列的定义是什么 - 某种'varchar'? –

+0

你尝试过吗? –

+0

Eng.Fouad - 我目前正在解决一些其他问题,这些问题阻止我立即进行测试 - 试图首先在这里问一问先行先试。 – DaveWeber

回答

5

它会抛出异常。

我想你在这里采取了错误的做法。 getXXX()应该匹配表的数据类型。表中的数据类型是否列为VARCHAR?如果出现这种情况,您应该使用getString()来获取数据,然后在存在,的情况下使用String.spilt(",")解析数据(您可以使用String.indexOf()来验证逗号是否存在)。

+0

这听起来不错。感谢您的反馈 - 我正在更新一些现有的代码,所以也许getInt以前工作过,他们知道他们只处理列中的一个值。 – DaveWeber

+0

@DaveWeber - 不客气。你有权查看表格的模式吗?验证数据类型在那里列出。 – CoolBeans

+0

我应该有访问权限(这是一个syscolumns表),稍后会尝试这样做。谢谢你的帮助。 – DaveWeber

1

我希望它会抛出异常。如果它给你一个价值,它不会是你想要的。我会把值作为字符串并解析它们,在逗号和修剪空格处分割。

4

你肯定会得到一个SQLException(或可能是NumberFormatException)。实际的interface只是说结果集将返回“指定列的值......作为int”。确切的细节将是具体实现,但我怀疑你会从"48, 103"的值得到任何明智的。

(个人而言,如果驱动程序允许您在该列上调用getInt,即使对于“明智”值,也是一个错误。即使字符串是int的字符串表示形式,字符串也不是int,并且转换应该由开发人员手动完成。)

+0

我认为NumberFormat更可能,因为SQLExceptions只发生在数据库访问错误。它抓住了价值,这只是解析数字时的问题。但我认为你对getInt部分不适用于文本列是正确的。 –

+0

这很有意义。感谢您的反馈。 – DaveWeber

0

我相信这是一个NumberFormatException

相关问题