在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");
有人可以为此建议我一个数据结构吗?
答案 0 :(得分:3)
不确定为什么要重新发明这个特定的轮子,看起来如果你反复连接每个查询,你基本上是在写任何性能,但为什么不使用RowSetDynaClass如果你不打算映射到对象?
请注意,已有大量已有测试和验证的预先存在的解决方案。并使用连接池;创建连接很昂贵。
答案 1 :(得分:1)
有很多开源,实现就像你想要做的那样。
例如答案 2 :(得分:0)
如果您无法使用任何已有的库来解决您的问题,可以使用
Vector<Map<String, Object>>
其中String包含列名,Object是列的值。 Vector中的每个元素都对应ResultSet的一行。这可能不是最有效的数据结构,但应该完成工作。