使用存储过程和断开式连接数据库获取指定值
    一个小问题,我在使用存储过程从数据库中查找某一个特定值,如果把查询到的数据放到DataGridView.DataSource中,可以显示全部数据,可是我的程序是Web Wervice不使用DataGridView。
    使用foreach可以遍历输出全部查询到的数据,当我把查询到的其中一个字段放入label.text中,如果只查询到一个结果,那label.text显示正确的值,可是如果查询到的值超过一个,label.text中只显示遍历的最后一个值,怎么写代码,才能让多个label.text分别显示我想显示的多个值?
    例如:我有label1,label2,label3,怎么分别显示查询到的:第一行第一列的值,第二行第二列的值,第二行第五列的值。(简单一点就获取同一行中第一、第三、第五列中的值)
谢谢^_^
原代码如下:
            SqlConnection cn = new SqlConnection("Data Source=.;Initial Catalog=DBName;Integrated Security=True");
            DataSet ds = new DataSet();
            SqlCommand cmd = cn.CreateCommand();
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "StoredProcedureName";
            SqlDataAdapter dp = new SqlDataAdapter();
            dp.SelectCommand = cmd;
            dp.Fill(ds, "tableName");
            DataTable dt = ds.Tables[0];
            foreach (DataRow dr in dt.Rows)
            {
                foreach (DataColumn dc in dt.Columns)
                {                    label1.Text = dr[dc.ColumnName].ToString(); //能显示遍历的最后一个值
                    Console.WriteLine(dr[dc.ColumnName].ToString()); //能输出全部值                }
            }

解决方案 »

  1.   

    label1.Text = dr[dc.ColumnName].ToString();  
    这是一个复制语句,每次都会覆盖以前的值,因此只保留了最后的一个值。更改程序代码,将需要的值赋给不同的变量。
      

  2.   

    解决了,谢谢^_^
    代码如下:
                    DataSet ds = new DataSet();
                    SqlCommand cmd = cn.CreateCommand();
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.CommandText = "存储过程名称";
                    SqlDataAdapter dp = new SqlDataAdapter();
                    dp.SelectCommand = cmd;
                    dp.Fill(ds, "XXX");                DataTable dt = ds.Tables[0];
                    string[] tempArray = new string[50];
                    int i = 0;
                    foreach (DataRow dr in dt.Rows)
                    {
                        foreach (DataColumn dc in dt.Columns)
                        {
                            tempArray[i] = dr[dc.ColumnName].ToString();
                            i++;
                            Console.WriteLine(dr[dc.ColumnName].ToString());                    }
                    }
                    sm.p_ID = Convert.ToInt32(tempArray[0]);
                    sm.p_address = tempArray[1];
                    sm.p_message = tempArray[2];