从数据库中读取一行数据并将其存储到数组中

时间:2016-03-06 05:13:58

标签: c# arrays multidimensional-array

我想从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。 “输入字符串的格式不正确。”

1 个答案:

答案 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());       
     }
}