2015-11-05 43 views
1

我正在研究谷歌圖表API和 谷歌可視化燭臺圖預計數據是一個數組的數組,它可以工作。如何從結果集構建數組數組

例如下面的格式

[ 
[ "2011-08-01", 136.65, 136.96, 134.15, 136.49 ], 
[ "2011-08-02", 135.26, 135.95, 131.50, 131.85 ], 
[ "2011-08-05", 132.90, 135.27, 128.30, 135.25 ] 
] 

這是我的SQL由我正在檢索從數據庫中的數據

String selectsql = "select current_day , open_val , high_val , low_val , close_val from historical_data where symbol_name = ?"; 
while(Rset.next()) 
      { 
       String current_day = SgxRset.getString("current_day"); 
       String open_val = SgxRset.getString("open_val"); 
       String high_val = SgxRset.getString("high_val"); 
       String low_val = SgxRset.getString("low_val"); 
       String close_val = SgxRset.getString("close_val"); 
      } 

你能告訴我如何構建如何構建陣列數組

示例程序

import java.util.ArrayList; 
import java.util.List; 

import org.json.JSONException; 

public class TestJSON { 

    public static void main(String[] args) throws JSONException { 
     Employee emp1 = new Employee(); 
     emp1.setName("Ravi"); 
     emp1.setName("20"); 
     Employee emp2 = new Employee(); 
     emp2.setName("Kiran"); 
     emp2.setName("20"); 
     List<Employee> histList = new ArrayList<Employee>(); 

     Object[] arrayResultData = histList.toArray(); 

    } 
} 


public class Employee { 

    String name ; 
    public String getName() { 
     return name; 
    } 
    public void setName(String name) { 
     this.name = name; 
    } 
    public String getAge() { 
     return age; 
    } 
    public void setAge(String age) { 
     this.age = age; 
    } 
    String age ; 

} 
+0

怎麼樣使用多維數組? –

+0

我不認爲這是一個數組的數組。它有一個字符串,其他的是浮點值。 –

+0

如果你不知道有多少行,你不需要一個數組的數組,因爲你不能調整數組的大小 - 你需要一個數組的列表或類似的東西。 –

回答

1

創建一個將在這樣一個對象的getter和setter持有所有這些數據一起一類:

public class Data { 
      private String current_day; 
    private double open_val; 
    private double high_val; 
    private double low_val; 
    private double close_val; 

    public Data(String current_day, double open_val, double high_val, 
      double low_val, double close_val) { 
     this.current_day = current_day; 
     this.open_val = open_val; 
     this.high_val = high_val; 
     this.low_val = low_val; 
     this.close_val = close_val; 
    } 

    public String getCurrent_day() { 
     return current_day; 
    } 

    public void setCurrent_day(String current_day) { 
     this.current_day = current_day; 
    } 

    public double getOpen_val() { 
     return open_val; 
    } 

    public void setOpen_val(double open_val) { 
     this.open_val = open_val; 
    } 

    public double getHigh_val() { 
     return high_val; 
    } 

    public void setHigh_val(double high_val) { 
     this.high_val = high_val; 
    } 

    public double getLow_day() { 
     return low_val; 
    } 

    public void setLow_day(double low_day) { 
     this.low_val = low_day; 
    } 

    public double getClose_day() { 
     return close_val; 
    } 

    public void setClose_day(double close_day) { 
     this.close_val = close_day; 
    } 

    } 

現在,數據存儲在您從SQL獲取對象的數組。

String selectsql = "select current_day , open_val , high_val , low_val ,close_val from historical_data where symbol_name = ?"; 
    List<Data> myList = new ArrayList(Data); 
    while(Rset.next()) 
       { 
        String current_day = SgxRset.getString("current_day"); 
        String open_val = SgxRset.getString("open_val"); 
        String high_val = SgxRset.getString("high_val"); 
        String low_val = SgxRset.getString("low_val"); 
        String close_val = SgxRset.getString("close_val"); 

        Data data = new Data(current_day,open_val,high_val,low_val,close_val); 
        myList.add(data); 
       } 

讀取數據,你可以這樣寫:

String a = "[ "; 
    for (int i = 0; i < myList.size(); i++) { 
     String b = "[ \"" + myList.get(i).getCurrent_day() + "\" , " 
       + myList.get(i).getOpen_val() + "],"; 
     if(i==myList.size() -1) 
      a += b; 
     else 
      a += b+","; 
    } 
    a += " ]"; 

現在,我的輸出是:

[ [ "2011-08-01" , 136.65],[ "2011-08-02" , 135.26] ] 
+0

謝謝,但同樣的事情知道erguant提到了什麼?它有什麼不同? – Pawan

+0

是的,它是一樣的,但是,當我寫答案的時候,有人已經回答了。 –

+0

我認爲,創建一個數組的數組是這裏的一個濾波器。你需要創建一個看起來像一個數組數組的字符串。我親自在谷歌可視化工作。我認爲上面編輯的代碼會幫助你。 –

1

我推薦列表。你不知道你的列是什麼,你有多少:

List<HistData> histList = new ArrayList<HistData>(); 
//.. query db 
while(Rset.next()){ 
    HistData histData = new HistData(); 
    histData.setCurrentDay(SgxRset.getString("current_day")); 
    histData.setOpenVal(SgxRset.getString("open_val")); 
    histData.setHighVal(SgxRset.getString("high_val")); 
    histData.setLowVal(SgxRset.getString("low_val")); 
    histData.setCloseVal(SgxRset.getString("close_val")); 
    histList.add(histData); 
} 

HistData只是一個POJO,但你可以改變數據類型的bean和SgxRset檢索式,這樣你就不會在來鎖定任何數組類型。使用列表而不是數組提供了更大的靈活性,以防您返回許多未知長度的結果。

public class HistData { 
    public HistData(){} 
    String currentDay; 
    public setCurrentDay(String currentDay){ 
     this.currentDay = currentDay; 
    } 
    public getCurrentDay(){ 
     return currentDay; 
    } 
    // .. etc. 
} 
+0

但仍然如何從List構造這種類型的數組? – Pawan

+0

我在我的代碼的第一行創建我的列表。 – ergonaut

+0

不,我的意思是數組對象字符串數據 – Pawan

1

使用列表和指定者方法

String selectsql = "select current_day , open_val , high_val , low_val ,  close_val from historical_data where symbol_name = ?"; 

     List<String[]>resultData = new ArrayList<Stirng[]>(); 

     while(Rset.next()) 
       { 
        String[] array = new String[5]; 

        array[0] = SgxRset.getString("current_day"); 
        array[1] = SgxRset.getString("open_val"); 
        array[2] = SgxRset.getString("high_val"); 
        array[3] = SgxRset.getString("low_val"); 
        array[4] = SgxRset.getString("close_val"); 
       } 

     Object[] arrayResultData = resultData.toArray();