使用存储过程和断开式连接数据库获取指定值
一个小问题,我在使用存储过程从数据库中查找某一个特定值,如果把查询到的数据放到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()); //能输出全部值 }
}
一个小问题,我在使用存储过程从数据库中查找某一个特定值,如果把查询到的数据放到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()); //能输出全部值 }
}
这是一个复制语句,每次都会覆盖以前的值,因此只保留了最后的一个值。更改程序代码,将需要的值赋给不同的变量。
代码如下:
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];