目前我有以下代码:
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。但这也不起作用。
非常感谢任何想法或建议。
答案 0 :(得分:0)
认为这里有一些问题...首先,为什么要运行查询然后将其传递给数据适配器?数据适配器将在查询时运行select命令。
我建议在你的aspx页面上创建一个SqlDataSource(不是后面的代码)并将你的控件绑定到它。然后连接选择事件并在其中填充参数。这应该在页面生命周期的后期发生,这样就可以设置参数值。
答案 1 :(得分:0)
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,但应该是分页和其他你需要的东西。