[英]Problems with reading SQL row with java
我正在使用帶有神奇寶貝的sql數據庫的Java程序。 我在將一行數據庫放入數組時遇到問題。 這是導致問題的代碼部分。
String query2 = "SELECT * " +
"FROM Pokedex.typea, Pokedex.Pokemon where Pokemon.ID = " + pk +
" AND type1 = type_name";
java.sql.Statement st2 = con.createStatement();
ResultSet rs2 = st2.executeQuery(query2);
int i = 2
while(rs2.next() && i<19) {
weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
i++;
}
這是query2返回的行(我在mysql工作台上對此進行了測試):
Fire 1 0 0 0 1 0 1 0 0 1 -1 1 0 0 0 -1 1 -1 4 Charmander 39 52 43 60 50 65 309 Fire null Blaze null Solar Power NULL
我希望這段代碼會將第2列到第18列的值放入數組“ weaka”中,但是所有代碼所做的就是不斷地
weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
但它永遠不會遞增i,永遠不會讀取任何其他列的內容,永遠不會結束。 該程序只打印“ 1”幾百次,然后崩潰。 為什么我不迭代?
有人可以幫我弄清楚如何使我的代碼向下行並將第2列至第18列的內容讀入數組嗎? 謝謝
編輯:感謝您的兩個答案。 他們都努力使數組讀取該行,但是該過程的持續時間仍然比兩個答案都要長。 就像它多次讀取該行。 我提供給您的代碼不在循環中,那么為什么要多次讀取該行?
而且Pokemon.ID是我的架構的主鍵,因此查詢將僅返回一行。
ResultSet.next()
方法嘗試從結果集中讀取一行 ,並在管理的情況下返回true
。 你在做什么:
while(rs2.next() && i<19) {
weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
i++;
}
正在讀取一行,將第一個值放入數組,然后讀取下一行。 但是沒有下一行,因此執行從此處停止。
相反,請執行以下操作:
if (rs2.next()) {
for (int i=2; i < 19; i++){
weaka[i-2] = rs2.getInt(i);
System.out.println(weaka[i-2]);
}
}
如果要讀取的行不止一個,那么您也需要處理該行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.