我想从jdbc中的oracle数据库中获取bigint值。 getBigInt()
或者 getBigInteger()
不象这样工作 getInt()
. 以下是代码片段:
public List<Employee> getAllEmployees()
{
List<Employee> employeeList = new ArrayList<Employee>();
try
{
//typical jdbc coding
Connection conn = DBUtil.getConnection();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT * FROM employee1");
while(rs.next())
{
Employee employee = new Employee(rs.getString("emp_id"), rs.getString("name"), rs.getBigInt("emp_mob"));
employeeList.add(employee);
}
DBUtil.closeConnection(conn); //close connection
}
catch(Exception e)
{
e.printStackTrace();
}
return employeeList;
}
表中的emp\u mob列包含大整数值。
3条答案
按热度按时间djmepvbi1#
这个
BIGINT
数据类型是一个8字节的二进制数,这意味着匹配的java类型是long
,所以使用getLong()
:如果列是
NULL
-可以,使用java类型Long
,然后打电话wasNull()
打电话后getLong()
:或者,如果您想要一个java
BigInteger
,呼叫getBigDecimal()
并将其转换为:dhxwm5r42#
正确的方法是
.getObject(colIdx, BigInteger.class);
,但这是否真正起作用取决于您的jdbc驱动程序。可能不会,但你应该试试看:如果成功了,就这样。简单,高效,没有问题。如果没有,你应该用
.getBigDecimal()
. 这是jdbc驱动程序实际上可能不支持的另一种方式,所以请尝试一下。如果这也是一个失败,你最后的选择是
.getString
,然后将其传递给biginteger以重新分析为数字。这是相当低效的。sql中列/表达式的类型是什么?知道会有帮助的,那是一个搜索文档的好地方。mrwjdhj33#
使用
BigInteger.valueOf(rs.getLong("emp_mob"))
这样更安全。