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
)会有所不同吗?