如何用 SqlDataReader Read()查询结果,赋值给多个变量?

stringgggsql="SELECTTOP3[biaoTi],[id]FROM[souYad]ORDERBY[id]DESC";SqlConnectionConn=n... string gggsql = "SELECT TOP 3 [biaoTi], [id] FROM [souYad] ORDER BY [id] DESC";

SqlConnection Conn = new SqlConnectio(ConfigurationManager.ConnectionStrings["dbh205294ConnectionString"].ConnectionString);

Conn.Open();
SqlCommand comm = new SqlCommand(gggsql, Conn);
SqlDataReader read = comm.ExecuteReader();

while (read.Read())
{
Label1.Text += read["biaoTi"].ToString();
//这里的Label1.Text的值是3个值的相加。
请问如何把这三个值分别赋值给Label1.Text、Label2.Text、Label3.Text
}
展开
 我来答
freeeeeewind
2015-08-14 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1300万
展开全部

方法如下:

(1)定义struct或class。字段或属性与表字段对应;

(2)生成一个步骤(1)定义的struct或class实例, 调用 SqlDataReader.Read读取一条记录后,将记录各个字段的值赋给对应的字段或属性;

(3)如果程序要获取多条记录,可将步骤(2)中的struct或对象实例保存到集合中;

-------------------------------------------------------------------------------------

举例如下:

(1)数据库中的表结构如下

表中的记录

(2)实现代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;

namespace ConsoleApplication1
{
    /// <summary>
    /// DeviceEntity与数据表字段对应
    /// </summary>
    struct DeviceEntity
    {
        public string Id;
        public string Name;
        public int Heartbeat;
    }
  
    class Program
    {
        static void Main(string[] args)
        {
            const string connectionString =
                "Data Source=(Local);Initial Catalog=PM25Db;Integrated Security=True";
            SqlConnection con = new SqlConnection(connectionString);
            SqlCommand command = con.CreateCommand();
            command.CommandText = "Select * From Device";
            con.Open();

            // List集合用于存放所有读出的记录
            List<DeviceEntity> records = new List<DeviceEntity>();
            // 读数据库表
            SqlDataReader rd = command.ExecuteReader();
            while (rd.Read())
            {
                // 创建一个DeviceEntity
                DeviceEntity devInfo;
                // 将读出的字段依次赋予 devInfo对应的字段
                devInfo.Id = rd[0].ToString().Trim();
                devInfo.Name = rd[1].ToString().Trim();
                devInfo.Heartbeat = int.Parse(rd[3].ToString());
                // 添加到集合
                records.Add(devInfo);
            }
            // 关闭数据库连接
            rd.Close();
            con.Close();
            // 显示读出的内容
            foreach (DeviceEntity d in records)
            {
                Console.WriteLine("Id={0}, Name={1}, Heartbeat={2}",
                    d.Id, 
                    d.Name, 
                    d.Heartbeat);
            }
        }
    }
}

(3)运行结果

百度网友0704a1f82
推荐于2016-02-28 · TA获得超过346个赞
知道答主
回答量:275
采纳率:0%
帮助的人:130万
展开全部
Conn.Open()
Me.sqlDA = New SqlDataAdapter(gggsql, Conn)
Me.sqlDA.Fill(dtable)
sqlDA.Fill(dt, "mem")
sqlCon.Close()
然后就可以用dt.tables("mem").rows(i).item(j)选择查询出来的值
不要用ExecuteReader
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chenweidi232
2010-02-23 · TA获得超过674个赞
知道小有建树答主
回答量:858
采纳率:50%
帮助的人:393万
展开全部
SqlConnection Conn = new SqlConnectio(ConfigurationManager.ConnectionStrings["dbh205294ConnectionString"].ConnectionString);

Conn.Open();
SqlCommand comm = new SqlCommand(gggsql, Conn);
SqlDataReader read = comm.ExecuteReader();
int i=0;
Label[] label=new Label[];
while(read.Read())
{
if(i==0)
{
Label1.Text = read["biaoTi"].ToString();
}
if(i==1)
{
Label2.Text = read["biaoTi"].ToString();
}
else
{
Label3.Text = read["biaoTi"].ToString();
}
i++;
}
dr.close();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微软专家张海
2010-02-23 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
read.Read();
Label1.Text = read["biaoTi"].ToString();
read.Read();
Label2.Text = read["biaoTi"].ToString();
read.Read();
Label3.Text = read["biaoTi"].ToString();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式