C# 当读卡器关闭时调用Read的尝试无效

C# 当读卡器关闭时调用Read的尝试无效,c#,asp.net,dapper,C#,Asp.net,Dapper,首先,我对我们所有人都感到感激 我有一个方法调用(读取日期)返回(Sql数据读取器“dr”) 但是在返回数据之后,我尝试使用ifdr.read(),结果出现错误 当读卡器关闭时调用Read的尝试无效 SqlDataReader需要活动的db连接来浏览记录。在您的情况下,您正在关闭活动连接并返回readar对象,然后尝试检索记录。 这就是为什么你会犯错误。读卡器已关闭 我建议用两种方法来解决你的问题 1.从data readar读取数据,当其处于活动状态时 SqlDataReader dr;

首先,我对我们所有人都感到感激 我有一个方法调用(读取日期)返回(Sql数据读取器“dr”) 但是在返回数据之后,我尝试使用if
dr.read()
,结果出现错误

当读卡器关闭时调用Read的尝试无效


SqlDataReader
需要活动的
db连接来浏览记录。在您的情况下,您正在关闭活动连接并返回
readar
对象,然后尝试检索记录。 这就是为什么你会犯错误。读卡器已关闭

我建议用两种方法来解决你的问题

1.从
data readar
读取数据,当其处于活动状态时

 SqlDataReader dr;

        var ConnecRepository = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
           using (var connection = new SqlConnection(ConnecRepository))
           {
               connection.Open();
               SqlCommand cmd = new SqlCommand();
               cmd.Connection = connection;
               cmd.CommandType = CommandType.Text;
               cmd.CommandText = query;
               dr = cmd.ExecuteReader();
          if (dr.Read()){
                 \\your logic here}
        } 
二,。使用适配器填充数据集并将数据集/数据表返回到调用程序或网页。您可以找到如何使用dataapter填充数据集的样本数


希望这有帮助。如果你需要进一步的帮助,请告诉我。很乐意帮忙

你还没有提供一个。您还没有显示声明
db
的位置。db是具有ReadQueryNo方法的类的名称,
db
是某个对象的实例。但是你没有展示你是如何声明它的,或者你的问题中的定义或任何东西。因此,您没有满足a的条件。yeh抱歉,现在阅读代码,您会发现db是具有ReadQuery方法和ReadQuery方法的类的实例,我使用它以动态方式绑定我的Web中的所有数据读取器。您需要在问题中显示该代码。
 SqlDataReader dr;

        var ConnecRepository = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString.ToString();
           using (var connection = new SqlConnection(ConnecRepository))
           {
               connection.Open();
               SqlCommand cmd = new SqlCommand();
               cmd.Connection = connection;
               cmd.CommandType = CommandType.Text;
               cmd.CommandText = query;
               dr = cmd.ExecuteReader();
          if (dr.Read()){
                 \\your logic here}
        }