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

如何解决‘Fill: SelectCommand.Connection属性未初始化’错误

问题:Fill: SelectCommand.Connection property has not been initialized.

错误详情

当前Web请求执行期间发生未处理的异常,请查看堆栈跟踪获取错误详情及代码来源。
异常详细信息:System.InvalidOperationException: Fill: SelectCommand.Connection property has not been initialized.

出错代码

public void Refreshdata()
{
   SqlCommand cmd = new SqlCommand("select * from ProgressReport", con);
   SqlDataAdapter sda = new SqlDataAdapter(cmd);
   DataSet ds = new DataSet();
   _ = sda.Fill(ds);
   GridView1.DataSource = SqlDataSource1;
   GridView1.DataBind();
}

完整堆栈跟踪

[InvalidOperationException: Fill: SelectCommand.Connection property has not been initialized.]
   System.Data.Common.DbDataAdapter.GetConnection3(DbDataAdapter adapter, IDbCommand command, String method) +1774041
   System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +114
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +180
   System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +126
   WebApplication5.WebForm1.Refreshdata() +229
   WebApplication5.WebForm1.Page_Load(Object sender, EventArgs e) +124
   System.Web.UI.Control.OnLoad(EventArgs e) +108
   System.Web.UI.Control.LoadRecursive() +90
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1533
解决方案

这个错误的核心原因是传入SqlCommand的con对象未正确初始化或未关联有效连接,导致SqlDataAdapter无法获取可用的数据库连接,可按以下步骤修复:

  • 初始化数据库连接对象
    确保con是已用有效连接字符串实例化的SqlConnection对象,示例:

    SqlConnection con = new SqlConnection("你的数据库连接字符串");
    
  • 安全管理连接生命周期
    推荐使用using语句自动管理连接的打开与释放,避免资源泄漏:

    public void Refreshdata()
    {
        string connStr = "你的数据库连接字符串";
        using (SqlConnection con = new SqlConnection(connStr))
        {
            SqlCommand cmd = new SqlCommand("select * from ProgressReport", con);
            SqlDataAdapter sda = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            sda.Fill(ds);
            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();
        }
    }
    
  • 修正数据源逻辑错误
    原代码中用SqlDataAdapter填充了DataSet,但最后将GridView数据源设为SqlDataSource1,这会导致之前的查询操作无效,需改为使用填充后的DataTable(如ds.Tables[0])作为数据源。

内容的提问来源于stack exchange,提问作者WombedHades

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:45:39