我想从SQL Server数据库中读取数据并将其存储到数组中。
首先,我必须获取每一行并将其存储到二维数组中。
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_Subjects WHERE USN IN(SELECT USN FROM tbl_Student WHERE Semester='" + DropDownList1.Text + "')");
SqlDataReader rs;
rs = cmd.ExecuteReader();
while (rs.Read())
{
for (int k = 1; k < 10; k++)
{
g = k - 1;
num = rs[0].ToString();
read[g] = Convert.ToInt32(num);
}
这是我到目前为止所做的。我不知道如何直接将它分配给2D数组。因此,使用单维数组并认为我可以稍后复制它。
编辑:
我遵循了Hari Prasad建议的步骤,
con.Open();
SqlCommand cmd = new SqlCommand("SELECT * FROM tbl_Subjects WHERE USN IN(SELECT USN FROM tbl_Student WHERE Semester='" + DropDownList1.Text + "')",con);
SqlDataReader rs;
rs = cmd.ExecuteReader();
while (rs.Read())
{
int j = 0;
for (int i = 0; i < rs.FieldCount; i++)
{
arr[i, j] = int.Parse(rs.GetString(0));
}
}
con.Close();
rs.Close();
在此之后我得到一个FormatException。 “输入字符串的格式不正确。”
答案 0 :(得分:0)
可以使用new int[5,5]
创建二维数组,但请注意我们应该提前知道大小。在这种情况下,遗憾的是,读者并未提前提供行数。
回答你的问题&#34;我不知道如何将其直接分配到2D数组&#34;
//Declare 2d array
int[,] x = new int[5][rs.FieldCount]; //
int i=0;
for( int index = 0; index < rs.FieldCount; index ++ )
{
int validInt;
if(int.TryParse(rs.GetString(index), out validInt)
{
// usage
x[i,index] = validInt;
}
else { x[i,index] = -1; //default value
}
}
我建议使用DataTable
而不是2D数组(上面的方法),这很简单。
var dataTable = new DataTable();
dataTable.Load(rs);
现在,您拥有DataTable
foreach(DataRow row in dt.Rows)
{
foreach (DataColumn col in myTopTenData.Columns)
{
Console.Write(row[col].ToString());
}
}