我正在尝试使用SQL数据库中的数据填充多维数组。因为没有像myarray.Add这样的功能,我想出了别的东西。但它不起作用!我正在使用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 :(得分: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 :(得分: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"];
答案 2 :(得分:0)
您可以在ArrayList中使用ArrayLists 它对数据库结果更好,因为它们是动态的(无需声明大小)。 请看以下帖子: Multi-dimensional arraylist or list in C#?