You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断SqlDataAdapter查询是否包含数据?C# ADO新手求助

问题分析与修复

你的代码逻辑错误在于判断的对象不对:你通过new SqlDataAdapter(...)实例化的对象永远不会是null,所以不管SQL查询有没有返回记录,都会执行MessageBox.Show("Records have been read"),else分支永远不会触发。

正确的做法是:先让SqlDataAdapter填充DataTable,再通过DataTable的Rows.Count属性判断是否有查询结果。

修正后的代码

public static void readSqlData(String sSource)
{
    string strSelection = "SELECT * FROM " + sSource;
    dt = new DataTable();
    using (SqlDataAdapter da = new SqlDataAdapter(strSelection, cnn))
    {
        da.Fill(dt);
    }

    if (dt.Rows.Count > 0)
    {
        MessageBox.Show("Records have been read");
    }
    else
    {
        MessageBox.Show("No records \n" + strSelection);
    }
}

额外提示

  • 我添加了using语句来自动释放SqlDataAdapter的资源,这是.NET中处理资源的最佳实践。
  • 注意:直接用字符串拼接表名存在SQL注入风险,如果sSource来自用户输入,一定要先验证表名的合法性(比如检查是否在允许的表名列表中),避免安全问题。

内容的提问来源于stack exchange,提问作者eric.j.march

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 05:33:17