2010-11-23 21 views
1

我想从包含在数据库中的表中获取所有数据,并将其解析为列表。我尝试了几种不同的技术,无法使其工作。我正在尝试序列化ResultSet,以便可以通过套接字发送它。到目前为止,我已经得到的代码是:解析一个数据库结果集到一个对象列表

public Object readJavaObject(String query, Connection con) throws Exception 
{   
    PreparedStatement stmt = con.prepareStatement(query); 
    //stmt.setString(1, id); 
    query_results = stmt.executeQuery(); 
    while (query_results.next()) 
    { 
     dataObject = query_results.getObject(1); 
    } 
    query_results.close(); 
    stmt.close(); 

    return dataObject; 
} 

public void run() 
{ 
    try 
    { 
     Class.forName(dbClass); 
     con = DriverManager.getConnection (dbUrl, user, pass); 
     query = "SELECT * FROM Bench_table"; 
     dataList = (List) this.readJavaObject(query, con); 
     con.close(); 
    } 
} 

我不知道该怎么写代码周围readJavaObject。任何人都可以帮忙指出问题出在哪里?

感谢您的任何帮助。

+0

你能告诉我们什么是异常,错误信息呢? – 2010-11-23 11:58:39

+0

@The Elite绅士 - 我期待将所有表格数据存储为List而不是ResultSet。谢谢 – chrissygormley 2010-11-23 12:07:01

回答

2

您的代码有几个问题。

  1. 您循环遍历结果,但 只返回最后一行的数据。 而是在 readJavaObject方法中创建一个List,并在每个循环中添加一个 元素。
  2. 而不是获取第一列中的项目,我假设你想要所有的数据。您将必须更具体地使用哪些“get”方法来将数据从ResultSet中提取出来。可能创建一个POJO来表示一行数据,然后在循环内部填充它并将其存储在列表中。
  3. 假设你使用POJO,你可能想使用泛型与您的清单,使其更容易获得项目出来,而不必强制转换。
3

看看DbUtils(来自Apache的公地)。

如果你需要映射SQL结果到Java对象更复杂的解决方案,看看object-relational mapping。在Java中,标准是JPA(Java持久性API),Hibernate,EclipseLink和OpenJPA是最着名的实现者。

0

我最近发现了CachedRowSet,这不正是需要OP。它特别是允许序列化一个ResultSet,并在需要时恢复原来的。

相关问题