SqlDataReader中缺少行

SqlDataReader中缺少行,sql,sql-server,sqldatareader,Sql,Sql Server,Sqldatareader,我这里有一个非常独特的问题 如果要从数据库中选择数据,则使用SqlDataReader,datatable将无法获取所有数据库内容 DataTable DTReader = new DataTable(); string Query = "SELECT CardCode FROM OCRD"; using (SqlConnection Connection = new SqlConnection(ConnString)) { Stopwatch watch = new Stopwatc

我这里有一个非常独特的问题

如果要从数据库中选择数据,则使用
SqlDataReader
,datatable将无法获取所有数据库内容

DataTable DTReader = new DataTable();
string Query = "SELECT CardCode FROM OCRD";

using (SqlConnection Connection = new SqlConnection(ConnString))
{
    Stopwatch watch = new Stopwatch();
    watch.Start();

    Connection.Open();

    using (SqlCommand Command= new SqlCommand(Query, Connection))
    {
        using (SqlDataReader reader = Command.ExecuteReader())
        {
            DTReader.Load(reader);
        }
    }

    Connection.Close();
    watch.Stop();

    MessageBox.Show(watch.Elapsed.ToString());
    gridControl1.DataSource = DTReader;
}
在OCRD中,我们有一些特定的用户数据,其中cardcode是唯一的标识符

卡号可以是D40000、D41000,。。。等等

我们肯定有D46000代码,但我的datatable无法获取它们。从D40000到D44999,我们可以获得数据,但无法获得上述数据

这个查询绝对正确

有人对这个问题有什么想法吗


提前感谢。

如何验证数据表中的实际内容?与从OCRD中选择计数(*)相比,
DTReader.Rows.Count
返回什么?您可能对数据的过滤/显示方式而不是检索方式有问题。您确定指向同一个数据库吗?@Jeremy是的,我非常确定它指向同一个数据库。@Jeroemoster谢谢您的建议。我们在这里有不同!datatable.Rows.Count返回的差异至少为20.000个条目。您发布的代码在功能上是正确的,应该读取所有行,除非出现挂起事务或快照隔离的一些非常不可能的情况。仔细检查并再次检查您是否连接到了正确的服务器和数据库(不要相信主机名,请检查IP)。将命令替换为从OCRD中选择计数(*)并显示结果。这与使用Management Studio/sqlcmd从OCRD执行
SELECT count(*)得到的计数相同吗?添加模式(
dbo.OCRD
)会有所不同吗?