两个查询到两个列表
本文关键字:两个 列表 查询 | 更新日期: 2023-09-27 18:14:00
目前,我有一个运行良好的:
using (connection = new SqlConnection("connection string here"))
{
using (command = new SqlCommand(@"select * from tbl1", connection))
{
connection.Open();
using (reader = command.ExecuteReader())
{
while (reader.Read())
{
int ColIndex1 = reader.GetOrdinal("col_1");
int ColIndex2 = reader.GetOrdinal("col_2");
Console.Write(reader.GetString(ColIndex1);
Console.Write(" - ");
Console.Write(reader.GetString(ColIndex2);
Console.Write(Environment.NewLine);
}
}
}
}
我有另一个单独运行的查询,但第二个查询需要第一个查询,这意味着我最终会运行第一个查询两次。为了避免这种情况,如果我将命令行更改为:
using (command = new SqlCommand(@"select * from tbl1; select * from tbl2", connection))
如何将每个查询放到一个单独的列表中?我了解如何将单个查询放入列表,即:
public class Data
{
public int ColumnIndex1 { get; set; }
public int ColumnIndex2 { get; set; }
}
List<Data> list = new List<Data>();
list.Add(new Data(ColIndex1, ColIndex2));
第一个查询用于在硬盘驱动器上创建目录。第二个查询使用第一个查询,然后将文件添加到创建的目录中。
using (connection = new SqlConnection("connection string here"))
{
using (command = new SqlCommand(@"select * from tbl1", connection))
{
connection.Open();
using (reader = command.ExecuteReader())
{
while (reader.Read())
{
// read first grid
}
if(reader.NextResult())
{
while (reader.Read())
{
// read second grid
}
}
}
}
}
然而,我强烈建议使用辅助工具,例如,通过"dapper":
List<FirstType> first;
List<FirstType> second;
using(var multi = connection.QueryMultiple(sql, args))
{
first = multi.Read<FirstType>().ToList();
second = multi.Read<SecondType>().ToList();
}
我认为您需要研究IDataReader
接口上的NextResult
方法。这允许您在多个结果集之间移动。
http://msdn.microsoft.com/en-us/library/system.data.idatareader.nextresult(v=vs.110(.aspx