C# 如何获取数据读取器中的记录数?
我试图显示数据读取器中的记录数。这是我试过的C# 如何获取数据读取器中的记录数?,c#,record,datareader,C#,Record,Datareader,我试图显示数据读取器中的记录数。这是我试过的 if (mybtnreader1.HasRows) { using (DataTable dt = new DataTable()) { dt.Load(mybtnreader1); int rc = dt.Rows.Count; MessageBox.Show("Have "+rc+"records"); } } 虽然它有记录,但始终显示0。应该如何更正,或者是否有其他方法来获取数据读
if (mybtnreader1.HasRows)
{
using (DataTable dt = new DataTable())
{
dt.Load(mybtnreader1);
int rc = dt.Rows.Count;
MessageBox.Show("Have "+rc+"records");
}
}
虽然它有记录,但始终显示0。应该如何更正,或者是否有其他方法来获取数据读取器中的记录数
我用这个代码来显示数据
while(mybtnreader1.Read())
{
MessageBox.Show(mybtnreader1.GetValue(0) + " "+mybtnreader1.GetValue(1)+" ");
}
它显示的是数据,但当涉及到记录数时,它显示的是0。数据读取器是只读的,因此在遍历所有记录之前,您无法获取记录数。当你循环时,你可以数数,但不能在之前 如果您需要提前知道记录的数量,并希望获得DataReader的性能和内存优势,请将查询更改为运行两个查询。。首先是使用
选择计数(*)…
的相同基础查询,然后是实际查询。根据查询的不同,这显然会影响性能。由于缓存的原因,这不会是时间的两倍,而是额外的处理时间。您必须权衡提前计数的必要性与使用DataReader与DataTable的优势
例如,如果要从如下表中查询每条记录:
string sql = "SELECT * FROM MyTable";
using(var dataReader = ...)
然后您可以这样做:
string sql = @"
SELECT COUNT(*) FROM MyTable;
SELECT * FROM MyTable;
};
using(var dataReader = ...)
{
... process first result in data reader (count) ...
if (dataReader.NextResult)
{
... process the second result (records) ...
}
}
循环查询结果后,您可以使用:
您不能直接使用Datareader执行此操作。你可以像下面这样做-
SqlDataReader reader = command.ExecuteReader();
DataTable dt_results = new DataTable();
dt_results.Load(reader);
int count= dt_results.Rows.Count;
if(count>0)
{
//Hey! we Have records for this query
}
else{
//Sorry! No Records Exist for this query
}
你确定数据表中存在记录吗?你能尝试显示记录吗?@KhushalDave我编辑了问题如果这是我的查询,SqlCommand mybtncmd02=new SqlCommand(“SELECT*FROM DirectNodes”,mybtnconn1);你能给我举个例子说明如何添加第二个查询吗?
SqlDataReader reader = command.ExecuteReader();
DataTable dt_results = new DataTable();
dt_results.Load(reader);
int count= dt_results.Rows.Count;
if(count>0)
{
//Hey! we Have records for this query
}
else{
//Sorry! No Records Exist for this query
}