2016-12-18 11 views
0

結果セットの各値をフロート変数に格納する必要があります。現在、私はこれに対して複数のSQLクエリを使用しています。私はクエリを組み合わせたMySQL - 単一のSQLクエリを使用して同じ列の複数の値をフェッチする方法は?

float Wb_SWLat = 0; 
float Wb_NELat = 0; 
float Wb_SWLon = 0; 
float Wb_NELon = 0; 

float Nb_SWLat = 0; 
float Nb_NELat = 0; 
float Nb_SWLon = 0; 
float Nb_NELon = 0; 

//Query: 
String qryWb = "select zone, SW_lat, SW_lon, NE_lat, NE_lon from tbl_zones"; 

try { 
    Statement stmt = (Statement) conn.createStatement(); 

    Wb=stmt.executeQuery(qryWb); 
    while(Wb.next()){ 
     if (Wb.getString("zone") == "west"){ 
      Wb_SWLat=Wb.getFloat("SW_lat"); 
      Wb_NELat=Wb.getFloat("NE_lat"); 
      Wb_SWLon=Wb.getFloat("SW_lon");   
      Wb_NELon=Wb.getFloat("NE_lon"); 
     } 
     else if (Wb.getString("zone") == "north"){ 
      Nb_SWLat=Wb.getFloat("SW_lat"); 
      Nb_NELat=Wb.getFloat("NE_lat"); 
      Nb_SWLon=Wb.getFloat("SW_lon");   
      Nb_NELon=Wb.getFloat("NE_lon"); 
     } 
    } 
} catch (SQLException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

これは効率的な方法ですか?これを行う正しい方法ですか?以下は

私のMySQLのテーブルは、tbl_zonesです: -

pk_id jn zone  SW_lat  SW_lon  NE_lat  NE_lon 
-------------------------------------------------------------- 
1  j1 west  9.99404 76.3567 9.99419 76.3572 
2  j2 north 9.99419 76.3572 9.99471 76.3573 
3  j3 south 9.99384 76.3572 9.99413 76.3573 
4  j4 east  9.99413 76.3574 9.99426 76.3577 
+0

親愛なるプログラマー、コードのどの部分が高く評価されています

クエリは次のようになります。前もって感謝します。 – jasim

答えて

1

where句でOR演算子を使用します。それはの両方をとする必要があります。クエリ(およびroundtrip time to DB)に必要です。

さて、各フェッチされた行を識別し、あなたのselect声明にzoneを追加し、ResultSetオブジェクトの現在の行を識別するために、あなたのコード内でif句を使用するためです。

select SW_lat, SW_lon, NE_lat, NE_lon, zone from tbl_zones where zone='west' OR zone='north 
+0

私は本当にそれを得るdid'ntの申し訳ありません!私は西と北の "SW_lat"、 "SW_lon"、 "NE_lat"と "NE_lon"を別々に得たいと思っています。すなわちプログラムに示されているように8つの別個の値である。 – jasim

+1

@jasim [ここ](http://stackoverflow.com/questions/7643576/java-looping-through-result-set)に示すように、結果セット内のフェッチされた行を繰り返し処理することができます。 – MordechayS

+0

はいできます。あなたが私のプログラムを見ているなら、私は "Wb.getFloat(" SW_lat ")"を使って繰り返していることがわかります。ここでwbは結果セットです – jasim

関連する問題