我试图通过迭代读取器来获取返回的行数。但是运行此代码时,我总是得到1吗?我在这件事上搞砸了吗?
int count = 0;
if (reader.HasRows)
{
while (reader.Read())
{
count++;
rep.DataSource = reader;
rep.DataBind();
}
}
resultsnolabel.Text += " " + String.Format("{0}", count) + " Results";
SQLDataReaders是仅转发的。您实际上是在这样做:
count++; // initially 1
.DataBind(); //consuming all the records
//next iteration on
.Read()
//we've now come to end of resultset, thanks to the DataBind()
//count is still 1
您可以改为:
if (reader.HasRows)
{
rep.DataSource = reader;
rep.DataBind();
}
int count = rep.Items.Count; //somehow count the num rows/items `rep` has.
问题内容: 我正在用C#编写一种从WCF服务查询SQL Server Express数据库的方法。我必须使用ADO.NET来做到这一点(然后稍后用LINQ重写它)。 该方法采用两个字符串(),然后从匹配记录中返回“ Health Insurance NO” (健康保险否)属性。我想将其读入列表(还有一些其他属性也可以检索)。 当前代码返回一个空列表。我要去哪里错了? 问题答案: 您正在尝试加载经>
问题内容: 我该如何更改: 得到 MAX(FormID) 吗? 我的自然趋势是在FormID周围抛出一个MAX,但是我遇到了IndexOutOfRange异常。 问题答案: 当您选择最大ID时,您不应使用-查询仅返回一项,默认情况下未命名,因此您的现有查询会中断,因为它希望得到一个名为“ FormID”的结果-尽管您可以通过以下方式“固定”查询使用。而是使用:
问题内容: 在我的数据库中,我具有NextStatDistanceTime值作为浮点数。执行“ ”行时,出现错误 系统无效的强制转换异常 如何在此代码中从sql命令获取浮点值? 这是我的代码: 问题答案: 我想是时候放一张桌子了。 T-SQL类型名称 相当于.NET C#类型名称 `DataReader` 方法 `FLOAT` `System.Double` `double` `IDataRead
问题内容: 我正在尝试使用C#查找表的计数,但是我一直在获取 不存在数据时进行无效的读取尝试 我的代码: 我知道我与数据库之间存在有效的连接,因为我可以在许多地方进行读写操作,但是我无法正确读取数据库有何特别之处?我该如何填充? 问题答案: 您必须阅读: 或者,您可以只使用ExecuteScalar: 定义为: 执行查询,并返回查询返回的结果集中第一行的第一列。其他列或行将被忽略。
问题内容: 问题继续,我发现自己一遍又一遍地编写以下代码: 必须嵌套两个using语句相当繁琐。有没有办法 告诉 SqlDataReader它拥有命令,并告诉命令它拥有连接? 如果有一种方法,那么我可以编写一个可以这样调用的辅助方法: 还是我必须忍耐一下,并通过SqlDataReader编写自己的包装器? 问题答案: 一件事就是编写一个为您处理的方法,并用每个结果调用一个委托。例如: 然后,Exe
本文向大家介绍SqlDataReader指定转换无效的解决方法,包括了SqlDataReader指定转换无效的解决方法的使用技巧和注意事项,需要的朋友参考一下 SqlDataReader指定转换无效的解决方法,具体内容如下 SqlDataReader 自带的GetInt32(以及其他的比如GerString等)方法 只是获取数据库中对应数据类型的列,并不具有类型转化的功能,所以不能这样使用 解决方