使用存储过程和断开式连接数据库获取指定值

水晶圣教士 2009-05-20 10:42:57
使用存储过程和断开式连接数据库获取指定值
一个小问题,我在使用存储过程从数据库中查找某一个特定值,如果把查询到的数据放到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()); //能输出全部值

}
}
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
水晶圣教士 2009-08-05
  • 打赏
  • 举报
回复
解决了,谢谢^_^
代码如下:
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];
Simonzy 2009-05-20
  • 打赏
  • 举报
回复
label1.Text = dr[dc.ColumnName].ToString();
这是一个复制语句,每次都会覆盖以前的值,因此只保留了最后的一个值。

更改程序代码,将需要的值赋给不同的变量。

111,115

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧