使用来自SQLDataReader的多个结果集

本文关键字:结果 SQLDataReader | 更新日期: 2023-09-27 18:06:15

我目前正在做一个学校项目,希望有人能给我指一个在线教程。这是一个家庭作业,所以我不寻找有人给我的答案,但我想找到一个教程,是类似于我的预期解决方案。我一直在谷歌SQLDataReader和Linq,并没有能够找到一个类似于我所追求的解决方案。

我正在连接我的c#客户端项目到SQL数据库。这个数据库包含一个Dogs表和一个BreedOfDog表,以说明狗可以是混合品种的事实。BreedOfDog有两个值,DogId和BreedId,它们将Dog表连接到Breed表。在我的客户端应用程序中有一个容器,用于显示狗的信息。还有一个Dog类,它包含一个品种对象列表。品种对象的列表将用于用狗的品种填充一个列表框。这就是我打算在伪代码中做的:

创建允许多个结果集的SQL查询。我将使用SQL数据库中的存储过程

打开SQL数据库连接

执行第一个获取Dog对象列表的查询

执行第二个查询。该查询将在第一个查询中为每只狗提取DogId,在BreedOfDog上执行查询,创建Breed对象列表并将其添加到dog对象。这将对Dogs列表中的每个Dog执行。

关闭连接

你能给我指一个好的教程吗?

使用来自SQLDataReader的多个结果集

    List<DogClass> Dogs = new List<DogClass>();
    string SQL = "select DogId from Dog";
    SqlCommand Command = new SqlCommand(SQL, Con);
    SqlDataReader Reader = Command.ExecuteReader();
    while (Reader.Read())
    {
        DogClass Dog = new DogClass(Reader, Con);
        Dogs.Add(Dog);
    }
    Reader.Close();

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
class DogClass
{
    string DogId;
    List<BreedClass> Breeds = new List<BreedClass>();
    internal DogClass(SqlDataReader Reader, SqlConnection Con)
    {
        DogId = Convert.ToString(Reader.GetValue(Reader.GetOrdinal("DogId"))).Trim();
        string SQL = "select BreedOfDog from Breeds where DogID = '" + DogId + "'";
        SqlCommand Command = new SqlCommand(SQL, Con);
        SqlDataReader Reader2 = Command.ExecuteReader();
        while (Reader2.Read())
        {
            BreedClass Breed = new BreedClass(Reader);
            Breeds.Add(Breed);
        }
        Reader2.Close();
    }
}

using System;
using System.Data.SqlClient;
class BreedClass
{
    internal string Breed;
    internal BreedClass(SqlDataReader Reader)
    {
        Breed = Convert.ToString(Reader.GetValue(Reader.GetOrdinal("BreedOfDog"))).Trim();
    }
}

我记得在程序员学校(大学)做过同样的问题!你会爱上linq to sql的。你需要做的是:

    右键单击要放置linq数据类的文件夹。单击"添加新项-> LINQ到SQL类"。然后,打开服务器资源管理器并将表拖放到LINQ to SQL类设计器中。
  1. 然后,进入你想要使用类的。cs页面,并为你的数据库类实例化一个新对象,如DataClasses1DataContext db = new DataClasses1DataContext();
  2. 然后你可以通过LINQ到SQL语句来操作你的数据库,就像IQueryable<BREED> breeds = db.BREEDs.Take(50);一样简单。有关如何使用LINQ进行读/写/删除等操作的信息,请参阅本文。http://msdn.microsoft.com/en-us/library/bb882643.aspx