2011-02-17 74 views
2

我想用SQL數據庫中的數據填充多維數組。因爲沒有像myarray這樣的函數。爲此我想出了其他的東西。但它不工作!我正在使用C#.net 以下行提供了錯誤:arr [counter2] = {myDataReader [「rating」],myDataReader [「date」]};正確填滿多維數組

public string[,] getData(int id) 
    { 


     string queryString = "SELECT rating, date FROM rating WHERE id = '" + id + "'"; 
     SqlDataReader myDataReader = Database.sqlDataReader(queryString); 

     if (myDataReader.HasRows) 
     { 
      int counter = 0; 
      while (myDataReader.Read()) 
      { 
       counter++; 
      } 
      string[,] arr = new string[counter, 2]; 
      int counter2 = 0; 
      while (myDataReader.Read()) 
      { 
       counter2++; 
       arr[counter2] = {myDataReader["rating"], myDataReader["date"]}; 
      } 
     } 

     return arr; 
    } 

有人可以幫我解決這個問題或解釋我做另一個(也許更好)做同樣的事情?

+0

有什麼錯誤? – 2011-02-17 14:58:32

+0

是否有任何特定的原因,您希望數據轉到數組而不是DataTable? – Yetti 2011-02-17 14:59:11

+0

您的`rating`和`date`數據庫列都是字符串類型(如`varchar`)嗎? – 2011-02-17 15:00:10

回答

3

這太複雜了。試試這個:

public string[,] getData(int id) 
{   
    string queryString = "SELECT rating, date FROM rating WHERE id = '" + id + "'"; 
    List<string[]> data = new List<string[]>(); 

    using(SqlDataReader myDataReader = Database.sqlDataReader(queryString))  
     while(myDataReader.Read())   
      data.Add(new int[] { (string)myDataReader["rating"], (string)myDataReader["date"] }); 

    return data.ToArray(); 
} 

另外,你真的不應該連接你的SQL語句。

1

要麼使用交錯數組:

public string[][] getData(int id) 
... 
string[][] arr = new string[counter][]; 
... 
arr[counter2] = new string[] {myDataReader["rating"], myDataReader["date"]}; 

或單獨分配給每個條目:

arr[counter2,0] = myDataReader["rating"]; 
arr[counter2,1] = myDataReader["date"];