【发布时间】:2013-09-13 00:00:25
【问题描述】:
我已经实现了一个返回 SQL 数据库查询结果的方法。 我只希望该方法只返回一个 String[],它是在数据库上选择一列的查询的结果。 这是我的代码:
public class DBConnection {
private static Connection con;
private static Statement st;
private static ResultSet rs;
try
{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/database","user","password");
st = con.createStatement();
}
catch (Exception ex)
{
System.out.println("Error: "+ex);
}
public ArrayList<String[]> doQuery (String query)
{
ArrayList<String[]> v = null;
String [] record;
int columns = 0;
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
v = new ArrayList<String[]>();
ResultSetMetaData rsmd = rs.getMetaData();
columns= rsmd.getColumnCount();
while(rs.next()) {
record = new String[columns];
for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
v.add( (String[]) record.clone() );
}
rs.close();
stmt.close();
} catch (Exception e) { e.printStackTrace(); }
return v;
}
此方法返回一个包含查询结果的 ArrayList 对象。 现在,问题是:我怎样才能从这个 ArrayList 对象中获得一个只包含结果列的 String[] 对象?
(作为信息:String[] 对象将被插入到 JComboBox 对象中)
【问题讨论】:
-
先说明一下:你为什么打电话给
record.clone()?无论如何,您正在创建一个新数组,clone()只会创建另一个数组 - 它不是深度克隆,即字符串也没有被克隆(这也是不必要的)。 -
已经回答了。检查这个stackoverflow.com/questions/5374311/…