在ASP.NET页面中使用SqlDataAdapter

时间:2009-11-20 14:43:41

标签: asp.net ado.net sqldataadapter

我正在VS2008中编写ASP.NET 2.0页面。在我的Page_Load方法中,我有以下内容:

DataTable table = new DataTable();
SqlDataAdapter adapter = new SqlDataAdapter();

using (SqlConnection connection = new SqlConnection(conString)) {
    using (SqlCommand command = new SqlCommand(cmdString, connection)) {
        adapter.SelectCommand = command;
        rowCount = adapter.Fill(table);
    }
}

我做错了什么?

我第一次执行页面时,它工作正常(Fill返回一行)。如果我第二次运行(调试)页面,我得到零行。同样,如果页面正在运行,并且我修改了URL中的一个参数以便cmdString发生更改,我会得到零行。如果我进行一个简单的代码更改以强制重新编译,页面将再次起作用。

3 个答案:

答案 0 :(得分:0)

您是否在Page_Load事件中使用过这个?

 if(!Page.IsPostBack)
 {
   YourBindDateMethod();
 }

答案 1 :(得分:0)

听起来上面的代码在Page_Load事件中运行...并且它仅在页面第一次加载时运行...你是否在这样的语句中有上述代码?

protected void Page_Load(object sender, EventArgs e)
{

    if (!IsPostBack)
    {
        DataTable table = new DataTable();
        SqlDataAdapter adapter = new SqlDataAdapter();

        using (SqlConnection connection = new SqlConnection(conString))
        {
            using (SqlCommand command = new SqlCommand(cmdString, connection))
            {
                adapter.SelectCommand = command;
                rowCount = adapter.Fill(table);
            }
        }

    }
}

答案 2 :(得分:0)

我的cmdString有Page范围,我用+ =而不是String.Replace填充参数或者(更明智地)使用SqlParameter填充参数,所以在第一次尝试之后每次尝试都会损坏它。我假设嵌入在VS中的Web服务器即使停止调试器也会使页面对象保持活动状态,这就解释了为什么在每次代码更改后它只能工作一次。

再次感谢Phaedrus提出的问题:“你是肯定的,它包含每个负载的值吗?”