【发布时间】:2014-01-08 16:22:32
【问题描述】:
我正在使用以下通用数据帮助函数来运行查询并将它们作为 DbDataRecords 的集合返回。
public static IEnumerable<DbDataRecord> GetDataRecords(string Query, Dictionary<string, object> Parameters, CommandType CommandType = CommandType.Text)
{
using (MySqlConnection Connection = CreateConnection())
{
using (MySqlCommand cmd = new MySqlCommand(Query, Connection))
{
cmd.CommandType = CommandType;
foreach (var Parameter in Parameters)
{
cmd.Parameters.AddWithValue(Parameter.Key, Parameter.Value);
}
Connection.Open();
using (MySqlDataReader Reader = cmd.ExecuteReader())
{
foreach (DbDataRecord record in Reader)
{
yield return record;
}
}
Connection.Close();
}
}
}
这适用于多个结果,但我还想创建一个函数,将来自阅读器的单个记录作为单个 DbDataRecord 返回。我想不通的是如何将读取器中的单行转换为 DbDataRecord。这是我目前所拥有的:
public static DbDataRecord GetDataRecord(string Query, Dictionary<string, object> Parameters, CommandType CommandType = CommandType.Text)
{
DbDataRecord Record = null;
using (MySqlConnection Connection = CreateConnection())
{
using (MySqlCommand cmd = new MySqlCommand(Query, Connection))
{
cmd.CommandType = CommandType;
foreach (var Parameter in Parameters)
{
cmd.Parameters.AddWithValue(Parameter.Key, Parameter.Value);
}
Connection.Open();
using (MySqlDataReader Reader = cmd.ExecuteReader())
{
if(Reader.Read() != false)
{
Record = ???;
}
}
Connection.Close();
}
}
return Record;
}
我已经看到很多示例显示如何返回一列(ExecuteScalar),这不是我想要的。我也知道如何获取单个列值。同样,这不是我想要做的。
基本上我想替换下面的foreach循环
foreach (DbDataRecord record in Reader)
{
yield return record;
}
具有将单个读取器行转换为 DBDataRecord 的东西
【问题讨论】:
标签: c# datareader