我写了这些代码块:
ConnectDB.getConStr();
string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)";
OleDbCommand cmd = new OleDbCommand( query,ConnectDB.getConStr());
cmd.Parameters.AddWithValue("@mn", txtName.Text);
cmd.Parameters.AddWithValue("@msn", txtSurname.Text);
cmd.Parameters.AddWithValue("@me", txtEmail.Text);
cmd.Parameters.AddWithValue("@un", txtUsername.Text);
cmd.Parameters.AddWithValue("@up", txtPassword.Text);
try
{
ConnectDB.getConStr().Open();
cmd.ExecuteNonQuery();
ConnectDB.getConStr().Close();
ltrMesaj.Text = "Record has been added";
Response.Redirect("Login.aspx");
}
catch (Exception ex)
{
ltrMesaj.Text = ex.Message;
}但是我得到了这样的错误:ExecuteNonQuery需要一个开放的和可用的连接。连接的当前状态为已关闭。
我如何克服这个问题?
发布于 2013-04-15 03:06:58
您每次访问connection时都会创建一个新的instances。所以只创建一个instance并像这样使用它
OleDbConnection connection= ConnectDB.getConStr();
string query = "insert into users (memberName,memberSurname,memberEmail,userName,userPassword) values(@mn,@msn,@me,@un,@up)";
OleDbCommand cmd = new OleDbCommand( query,connection);
cmd.Parameters.AddWithValue("@mn", txtName.Text);
cmd.Parameters.AddWithValue("@msn", txtSurname.Text);
cmd.Parameters.AddWithValue("@me", txtEmail.Text);
cmd.Parameters.AddWithValue("@un", txtUsername.Text);
cmd.Parameters.AddWithValue("@up", txtPassword.Text);
try
{
connection.Open();
cmd.ExecuteNonQuery();
connection.Close();
ltrMesaj.Text = "Record has been added";
Response.Redirect("Login.aspx");
}
catch (Exception ex)
{
ltrMesaj.Text = ex.Message;
}https://stackoverflow.com/questions/16003084
复制相似问题