C# SqlCommand和ExecuteReader返回非公共成员
我使用SqlCommand从.sql文件执行脚本查询 我通过一个执行者得到结果 但价值观是作为非公共成员的,我无法访问它 你知道为什么以及如何解决这个问题吗 代码 这是因为ExecuteReader()返回的是SqlDataReader,而不是条目 :C# SqlCommand和ExecuteReader返回非公共成员,c#,sql,sql-server,C#,Sql,Sql Server,我使用SqlCommand从.sql文件执行脚本查询 我通过一个执行者得到结果 但价值观是作为非公共成员的,我无法访问它 你知道为什么以及如何解决这个问题吗 代码 这是因为ExecuteReader()返回的是SqlDataReader,而不是条目 : 如前所述,您可能不应该使用foreach。出于兼容性原因,需要实现它,但是这里的while(reader.Read())循环更简单。也就是说,如果需要,您可以使用foreach。用户值实现IDataRecord,您可以使用该界面访问值 forea
如前所述,您可能不应该使用
foreach
。出于兼容性原因,需要实现它,但是这里的while(reader.Read())
循环更简单。也就是说,如果需要,您可以使用foreach
。用户
值实现IDataRecord
,您可以使用该界面访问值
foreach (IDataRecord user in reader)
{
// access user[0], user["field"], etc. here
}
你是否曾经考虑过如何使用这个API?如果你不想处理所有的API,请考虑一些类似“dppER”(NuGET的搜索)。整个工作是:
var users=conn.Query(script.ToList()
@MarcGravel-实际上我想用json公开这些用户,所以我搜索的可能就是Dapper。谢谢。@MarcGravel-我在这里找到了一个解决方案:注意:命令
和读取器
也应该有使用
语句。好的,我试过了,但是读取器[0]返回了0,所以我认为它不起作用。事实上这是个好结果,我是个白痴。非常感谢。
private static void ReadOrderData(string connectionString)
{
string queryString =
"SELECT OrderID, CustomerID FROM dbo.Orders;";
using (SqlConnection connection =
new SqlConnection(connectionString))
{
SqlCommand command =
new SqlCommand(queryString, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
// Call Read before accessing data.
while (reader.Read())
{
Console.WriteLine(String.Format("{0}, {1}", reader[0], reader[1]));
}
// Call Close when done reading.
reader.Close();
}
}
foreach (IDataRecord user in reader)
{
// access user[0], user["field"], etc. here
}