2012-04-03 70 views
2

我從數據庫中檢索出各個String值,並使用String方法split()將其轉換爲String數組。從ResultSet填充數組SQL結果

ResultSet set = state.executeQuery("SELECT * FROM numberLotto"); 
while(set.next()) 
{ 
    num1 = set.getString(1);     
    num2 = set.getString(2); 
    num3 = set.getString(3); 
    num4 = set.getString(4); 
    num5 = set.getString(5); 
    num6 = set.getString(6); 
    num7 = set.getString(7); 
    totalLotto += num1 + " " + num2 + " " + num3 + " " + num4 + " " + 
     num5 + " " + num6 + " " + num7 + " " + "/"; 
} 
String[]listOfNumbers = totalLotto.split("/"); 

所產生的輸出是作爲遵循

3 18 27 38 41 45 47  
4 7 11 15 22 33 42 
2 9 15 23 24 39 44 
4 11 16 17 35 39 48 

如何可以添加上面的數字到數組的數組讓我可以通過每個單獨的號碼循環?(和隨後檢查它們是否包含在中獎號碼清單中?)

親切的問候

+1

你嘗試過什麼?另外,是否有充分的理由說明,爲什麼你的數據庫不只是將數字存儲爲數字數據類型? – 2012-04-03 13:13:24

+0

您可以獲取結果集返回的行數,然後在運行該集之前聲明多維數組。然後只需將值直接填入數組中。 – likenoother 2012-04-03 13:15:33

回答

4

你爲什麼使用字符串?這似乎是一個數字,所以整數會是一個更好的匹配:

List<int[]> listOfNumbers = new ArrayList<int[]>(); 
while(set.next()) { 
    int[] numbers = new int[7]; 
    for (int i = 0; i < numbers.length; i++) { 
     numbers[i] = set.getInt(i + 1); 
    } 
    listOfNumbers.add(numbers); 
} 

顯然你也必要時使用Integer[]

2

可以使用StringArrayList一個數組:

ArrayList<String[]> numbers = new ArrayList<String[]>(); 

然後通過空間進一步分裂listOfNumbers[0]並將結果添加到集合:

String[] listOfNumbers = totalLotto.split("/"); 
numbers.add(listOfNumbers[0].split(" ")); 

因此,假設listOfNumbers[0]

3 18 27 38 41 45 47 

按空間分割會給你一個String[],每個位置都有一個數字。

2
ResultSet set = state.executeQuery("SELECT COUNT(*) FROM numberLotto"); 
String[][] array = new String[rs.getInt(1)][6]; 

ResultSet set = state.executeQuery("SELECT * FROM numberLotto"); 
int i = 0; 
    while(set.next()) 
    { 

       array[i][0] = set.getString(1);     
       array[i][1]= set.getString(2); 
       array[i][2]= set.getString(3); 
       array[i][3]= set.getString(4); 
       array[i][4]= set.getString(5); 
       array[i][5]= set.getString(6); 
       array[i][6]= set.getString(7); 
      i ++;  
    } 
3

您可以將結果集中的值分配給字符串數組並將其添加到列表中。

例子:

ResultSet set = state.executeQuery("SELECT * FROM numberLotto"); 
List<String[]> lottoList = new LinkedList<String[]>(); 
while(set.next()) 
{ 
    String[] currentRow = new String[] {set.getString(1), 
             set.getString(2), 
             set.getString(3), 
             set.getString(4), 
             set.getString(5), 
             set.getString(6), 
             set.getString(7)}; 
    lottoList.add(currentRow); 
} 
// do whatever you like with lottoList 

然後,您可以遍歷lottoList和檢查有多少中獎號碼有。

2
 List<int[]> list = new ArrayList<int[]>(); 
     while (set.next()) { 
      int[] array = new int[7]; 
      for (int i = 1; i <= 7; i++) { 
       array[i - 1] = set.getInt(i); 
      } 

      list.add(array); 
     } 
1

這是一個例子,你可以把它改成你的代碼風格

String[] a = {"10 20 30 40 50","100 200 300 400 500","1000 2000 3000 4000"}; 
      String[][] b = new String[a.length][]; 
      for(int i = 0; i<a.length; i++){ 
       b[i] = a[i].split(" "); 
      } 
1
ResultSet set = state.executeQuery("SELECT * FROM numberLotto"); 
List<String[]> tmp = new ArrayList<String[]>(); 
while(set.next()) 
{ 
    String[] row = new String[7]; 
    row [0] = set.getString(1);     
    row [1] = set.getString(2); 
    row [2] = set.getString(3); 
    row [3] = set.getString(4); 
    row [4] = set.getString(5); 
    row [5] = set.getString(6); 
    row [6] = set.getString(7); 
    tmp.add(row); 
} 
String[][] listOfNumbers = tmp.toArray(new String[tmp.size()][7]);