簡體   English   中英

用Java讀取SQL行的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM