c# - 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 可能是这项工作的错误工具,但如果是这样,我不清楚我应该使用什么
编辑:我使用数据适配器重建了这段代码,它现在似乎可以工作了。我不明白为什么,不应该有所作为,但我想重写代码修复了我做错的任何事情。无需进一步评论。感谢回复的人。
解决方案
通常,您会希望用 DataAdapter 填充您的 DataSet。您不需要 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;
推荐阅读
- php - 控制台中的数据响应返回 HTML 代码
- node.js - 如何使用 axios/fetch (nodejs) 将 csv 文件上传到 blob 存储
- android - Android:如何创建根 CA 证书
- laravel - nginx 上的存储符号链接路径无法正常工作
- python - 如何在python中计算k个最近邻及其索引
- javascript - NodeJS 项目没有添加到对象的索引上?
- apache-camel - 使用 Apache Camel 的多播中的端点特定授权标头
- python - While循环:如何在循环期间仅设置一次(某物=整数)
- haskell - 从教堂编码转换为数字
- c# - ConfigurationManager.AppSettings 为简单的控制台应用返回 null