从java中的resultset(oracle db)获取BigInt值
我想从jdbc中的oracle数据库中获取一个BigInt值从java中的resultset(oracle db)获取BigInt值,java,jdbc,oracle11g,Java,Jdbc,Oracle11g,我想从jdbc中的oracle数据库中获取一个BigInt值getBigInt()或getbiginger()的工作方式与getInt()不同。以下是代码片段: public List<Employee> getAllEmployees() { List<Employee> employeeList = new ArrayList<Employee>(); try { //typical jdbc coding
getBigInt()
或getbiginger()
的工作方式与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;
}
public List getAllEmployees()
{
List employeeList=新建ArrayList();
尝试
{
//典型的jdbc编码
连接conn=DBUtil.getConnection();
语句st=conn.createStatement();
结果集rs=st.executeQuery(“从员工中选择*);
while(rs.next())
{
Employee Employee=新员工(rs.getString(“emp_id”)、rs.getString(“name”)、rs.getBigInt(“emp_mob”);
employeeList.add(员工);
}
DBUtil.closeConnection(conn);//关闭连接
}
捕获(例外e)
{
e、 printStackTrace();
}
返回员工名单;
}
表中的emp\u mob列包含大整数值。使用
biginger.valueOf(rs.getLong(“emp\u mob”)
这种方法更安全。正确的方法是
.getObject(colIdx,biginger.class)代码>,但这是否真正起作用取决于您的JDBC驱动程序。它可能不会,但你应该试试:如果它会,你就去吧。简单,高效,没有问题
如果没有,您可能应该使用.getBigDecimal()
。这是JDBC驱动程序实际上可能不支持的另一种方式,请尝试一下
如果这也是一个失败,那么最后一个真正的方法就是.getString
,然后将其传递给BigInteger以重新分析为一个数字。这是相当低效的。SQL中的列/表达式的类型是什么?这有助于了解,这是搜索文档的好地方。数据类型是一个8字节的二进制数,这意味着匹配的Java类型是一个长的
,因此请使用:
long mob=rs.getLong(“emp_mob”);
如果列为NULL
-able,请使用Java类型Long
,并在调用getLong()
后调用:
Long mob=rs.getLong(“emp_mob”);
如果(rs.wasNull())
mob=null;
或者,如果您想要Java,请调用并转换它:
BigDecimal=rs.getBigDecimal(“emp_mob”);
biginger mob=(decimal==null?null:decimal.toBigInteger());
当前的例外情况是什么?不是针对您的问题,但您应该在finally
块中关闭连接
,语句
和结果集
(或使用尝试使用资源
),或者尝试getLong
或getBigDecimal
更安全?对于太大的数字,这可能会以静默返回垃圾告终。您可能会认为,如果有人询问BigInteger,他们会得到一个大整数。如果值为NULL
,则不起作用。