微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

页面生命周期,数据库连接是否进入Page_Load

如何解决页面生命周期,数据库连接是否进入Page_Load

|| 目前,我有以下代码
void Page_Load(object sender,System.EventArgs e)
 {       
       string connectionString = \"server=abc;database=abc;uid=abc;pwd=1234\";
       sqlConnection MysqLConnection = new sqlConnection(connectionString);
       string procedureString = \"Callin_Insert\";
       sqlCommand MysqLCommand = MysqLConnection.CreateCommand();
       MysqLCommand.CommandText = procedureString;
       MysqLCommand.CommandType = CommandType.StoredProcedure;
       MysqLCommand.Parameters.Add(\"@LVDate\",sqlDbType.DateTime).Value = DateTime.Now;
       MysqLCommand.Parameters.Add(\"@LVTime\",sqlDbType.DateTime).Value = DateTime.Now;
       MysqLCommand.Parameters.Add(\"@CuID\",sqlDbType.Int).Value = CustID;
       MysqLCommand.Parameters.Add(\"@Type\",sqlDbType.Int).Value = Keypress;
       MysqLConnection.open();
       MysqLCommand.ExecuteNonQuery();
       sqlDataAdapter MysqLDataAdapter = new sqlDataAdapter();
       MysqLDataAdapter.SelectCommand = MysqLCommand;
       MysqLConnection.Close();
}
基本上,我在page_load期间打开到数据库的连接。我也在page_load中关闭该连接。我的部分问题是CustID和Keypress没有通过,因为它们发生在页面生命周期的后期。打开连接,获取2个变量(当我由用户输入它们时),将它们传递到数据库关闭连接的最佳方法是什么。 我尝试过的某项正在运行_OnLoad。但这也不起作用。 任何想法或建议,将不胜感激。     

解决方法

        SqlConnection首先是IDisposible接口,这意味着使用这样的语句包装代码会更安全。
string connectionString = \"server=abc;database=abc;uid=abc;pwd=1234\";
using (SqlConnection mySqlConnection = new SqlConnection(connectionString))
{
    string procedureString = \"Callin_Insert\";
    SqlCommand mySqlCommand = new SqlCommand(procedureString,mySqlConnection);
    mySqlCommand.CommandType = CommandType.StoredProcedure;

    mySqlCommand.Parameters.Add(\"@LVDate\",SqlDbType.DateTime).Value = DateTime.Now;
    mySqlCommand.Parameters.Add(\"@LVTime\",SqlDbType.DateTime).Value = DateTime.Now;
    mySqlCommand.Parameters.Add(\"@CuID\",SqlDbType.Int).Value = CustID;
    mySqlCommand.Parameters.Add(\"@Type\",SqlDbType.Int).Value = Keypress;

    mySqlConnection.Open();
    mySqlCommand.ExecuteNonQuery();

    //i have no idea what does this mean,data adapter is for filling Datasets and DataTables
    SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter();
    mySqlDataAdapter.SelectCommand = mySqlCommand;
}
第二,我为您提供了使用SqlDataSourceObject控件的方法,该控件将使处理类似您的案例的工作变得更加容易。 它会知道如何处理尚未实现的Page.IsPostBack,但应该处理分页和其他所需的东西。     ,        认为这里存在一些问题...首先,为什么要运行查询,然后将其传递给数据适配器?查询时,数据适配器将运行select命令。 我建议在您的aspx页面上创建一个SqlDataSource(而不是后面的代码),并将您的控件绑定到它。然后连接Selecting事件,并在其中填充参数。这应该在页面生命周期的稍后发生,因此将设置您的参数值。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。