ResultSet的数据结构

时间:2012-02-10 11:25:06

标签: java database

在java中使用数据库需要编写一组代码行。如果再次建立数据库连接,则需要再次重复同一组行,这会给程序员带来开销。

因此,我正在创建一个作为数据库代理的实用程序类。该类的方法将负责所有与数据库相关的事情,从建立连接到执行查询并返回结果。

我的班级就是这样 -

package connect;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class Connector
{
private ResultSet rs;
public String password;

public void connect(String dbUrl, String dbClass, String dbUserName, String dbPassword, String query)
{
    try
    {
        Class.forName(this.dbClass).newInstance();
        Connection conn = DriverManager.getConnection (dbUrl, dbUserName, dbPassword);
        Statement stmt = conn.createStatement();
        rs = stmt.executeQuery(query);

        while(rs.next())
        {
            this.password = (String) rs.getObject(1);
        }

        conn.close();
    } //end try
    catch(Exception e)
    {
        e.printStackTrace();
    }
}
}

当程序员需要执行查询时,可以为此目的编写以下行 -

Connector con = new Connector();
con.connect("your database URL",
            "your database driver",
            "your database username",
            "your database password",
            "your query");

我的问题是,现在我正在从连接方法本身的ResultSet中检索数据。检索到的数据可能因查询而异,因此我想要一个数据结构,我可以在其中将数据存储在connect()方法中并返回它。

看起来像 -

<data structure> result = con.connect("your database URL",
                                      "your database driver",
                                      "your database username",
                                      "your database password",
                                      "your query");

有人可以为此建议我一个数据结构吗?

3 个答案:

答案 0 :(得分:3)

不确定为什么要重新发明这个特定的轮子,看起来如果你反复连接每个查询,你基本上是在写任何性能,但为什么不使用RowSetDynaClass如果你不打算映射到对象?

请注意,已有大量已有测试和验证的预先存在的解决方案。并使用连接池;创建连接很昂贵。

答案 1 :(得分:1)

有很多开源,实现就像你想要做的那样。

例如

Spring JDBCTemplate

答案 2 :(得分:0)

如果您无法使用任何已有的库来解决您的问题,可以使用

 Vector<Map<String, Object>>

其中String包含列名,Object是列的值。 Vector中的每个元素都对应ResultSet的一行。这可能不是最有效的数据结构,但应该完成工作。