对于空表,c#datatable行计数返回1



我正在查询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可能是这份工作的错误工具,但如果是这样,我不清楚我应该使用什么

编辑:我使用数据适配器重新构建了这段代码,现在它似乎可以工作了。我不明白为什么,应该不会有什么不同,但我想重写代码修复了我做错的地方。无需进一步评论。感谢回复的人。

通常,您需要使用DataAdapters填充数据集。您不需要DataTable就可以用DataReader带回一条记录。但你可以这样做:

DataTable dt = new DataTable("TableName");
using (connection)
{
SqlCommand command = new SqlCommand(sSQL, connection);
connection.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
dt.Load(reader);
}
}
YourControl.Text = dt.Rows.Count;

相关内容

  • 没有找到相关文章

最新更新