【发布时间】:2020-07-16 00:36:33
【问题描述】:
我正在查询 SQL Server 数据库并填充数据表。但即使我的 sql 没有返回任何值,数据表的行数似乎也是一个。这是我的代码:
strSQL = "My sql string"
cmd.CommandText = strSQL;
cmd.Parameters.AddWithValue("@wsNo", wsNo);
cmd.Parameters.AddWithValue("@reachNo", reachNo);
using (DataTable dt = new DataTable())
{
dt.Load(cmd.ExecuteReader());
MyTextbox.Text = dt.Rows.Count.ToString();
myGridview.DataSource = dt;
myGridview.DataBind();
}
gridview 正确显示数据,如果 sql 没有返回记录则根本不显示。但我想在文本框中显示记录数,当没有记录时,它总是 1。我检查过的几个地方暗示 ExecuteReader 可能是这项工作的错误工具,但如果是这样,我不清楚我应该使用什么
编辑:我使用数据适配器重建了这段代码,它现在似乎可以工作了。我不明白为什么,不应该有所作为,但我想重写代码修复了我做错的任何事情。无需进一步的 cmets。感谢回复的人。
【问题讨论】:
-
我认为您在 DGV 中有一个空白行,因此您可以向表中添加新行。所以你的计数总是比实际行多一。为什么不使用 dt 行数而不是 DGV 数?
标签: c# sql-server executereader record-count