【发布时间】:2012-11-26 12:16:44
【问题描述】:
我通过 JDBC (Java) 使用 MySQL 命令来更改我的数据库。我已经实现了以下方法来返回列的值。目标是使列(行)中的位置与它们在数组中的位置(索引)相对应。这适用于字符串列,但对于数字列,ResultSet 似乎将它们按升序排列,从而使它们在返回的字符串数组中的位置不反映它们在列中的位置。 'rs' 是一个 ResultSet 引用变量。
public String[] getColumnContents(String tableName, String columnName) {
String sql = "SELECT " + columnName + " FROM " + tableName;
String[] results = new String[SQLManager.getColumnLength(tableName, columnName)];
try {
rs = statement.executeQuery(sql);
for (int counter = 0; rs.next(); counter++) {
results[counter] = rs.getString(columnName);
}
} catch (SQLException e) {
e.printStackTrace();
}
return results;
}
【问题讨论】:
-
当您处理数字列时,为什么要使用 rs.getString ?
-
因为该方法用于返回多种数据类型的列的值。
-
你可以使用 getObject() 代替
-
getColumnLength()到底是做什么的?循环中的计数器对查询返回的 rows 进行计数。您无法知道 ResultSet 将返回多少行,所以我怀疑getColumnLengt()是否真的计算了 rows 的数量。在处理来自数据库的结果集时,您应该使用动态调整的List而不是固定大小的数组。
标签: java mysql sql database jdbc