[英]Single DBDataRecord From DataReader
我正在使用以下通用数据助手功能来运行查询,并将它们作为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的东西
您可以返回IDataRecord
,这可能就足够了,然后可以直接返回MySqlDataReader
。 或者,您必须相应地将其转换为:
因此,这不可能直接实现:
Record = (DbDataRecord)Reader;
但是这样:
Record = (DbDataRecord)(IDataRecord)Reader;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.