[英]Converting ResultSet to array of to int
我試圖將ResultSet
轉換為int
數組,因為我擁有的方法返回int[]
:
public static int[] GetPathIDsFromDB (String Dbnum, int objectid) throws SQLException{
String selectSQL = "SELECT ID FROM " + Dbnum + ".tabName where ObjectID=?";
dbConnection = getDBConnection();
preparedStatement = dbConnection.prepareStatement(selectSQL);
preparedStatement.setInt(1 , objectid);
ResultSet rs = preparedStatement.executeQuery();
//int [] rsIDs = new rs.count;
int [] rsIDs = null;
while (rs.next()) {
rsIDs=rs.getInt(1); // the error int cannot be converted to int[]
}
return rsIDs;
}
我該如何轉換呢?
就個人而言,我會將它們放入列表中,然后最后轉換為數組。
List<Integer> rsIds = new ArrayList<Integer>();
while (rs.next()) {
rsIds.add(rs.getInt(1));
}
return rsIds.toArray(new Integer[](rsIds.size());
它應該通過自動裝箱自動將Integer []轉換為int []。
看到我是個白痴,那是行不通的,這就是我要做的事情:
rs.last();
int[] rsIds = new int[rs.getRow()];
rs.beforeFirst();
int counter = 0;
while (rs.next()) {
rsIds[counter] = rs.getInt(1);
counter++;
}
如果ResultSet的類型為TYPE_FORWARD_ONLY,則此方法將不起作用,您需要更改滾動類型以使其起作用。
您需要將每個結果從ResultSet
添加到數組,為此,您需要一個計數器變量作為數組的索引。
另外,正確初始化int[]
數組,因為當前它剛剛初始化為null
。
int[] rsIDs = new int[size]; // decide the size
int counter = 0; // counter
while (rs.next()) {
rsIDs[counter++] = rs.getInt(1);
}
而且,如果您事先不知道大小,那么最好使用ArrayList
而不是array
。
有兩種方法可以解決此問題:
執行另一個查詢以首先提取大小,提取大小,然后創建此大小的數組:
String sizeQuery = "SELECT count(*) FROM " + Dbnum + ".tabName where ObjectID=?";
創建一個Integer
List
,向其中添加結果(如M21B8所述),然后將其轉換為int[]
,如下所示:
int size = list.size(); int[] result = new int[size]; for (int i = 0; i < size; i++) { result[i] = list.get(i); } return result;
您可以使生活更輕松,並使用ArrayList:
ResultSet rs = preparedStatement.executeQuery();
ArrayList<Integer> rsIDs = new ArrayList<>();
while (rs.next()) {
rsIDs.add(rs.getInt(1));
}
如果仍然希望將其放在數組中,則可以在以后創建它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.