В основном, когда я запускаю этот код, я получаю следующую ошибку, и я не знаю, как ее разрешить. Я получаю эту ошибку, когда я нажимаю кнопку, а затем перенаправляюсь обратно в Visual Studio со следующей ошибкой. Пожалуйста, помогите мне решить эту ошибку, помощь приветствуется.A {«Существует уже открытый DataReader, связанный с этой командой, который должен быть закрыт первым».}
Существует уже открытый DataReader, связанный с этой командой, который должен быть закрыт первым.
public partial class forgot : System.Web.UI.Page
{
protected void resetpass_Click(object sender, EventArgs e)
{
SqlDataReader reader = null;
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["conn"].ConnectionString);
con.Open();
SqlCommand cmd = new SqlCommand("select * from reg where Username [email protected]", con);
cmd.Parameters.AddWithValue("@username", username.Text);
cmd.Parameters.AddWithValue("@security1", sec1.Text);
cmd.Parameters.AddWithValue("@security2", sec2.Text);
reader = cmd.ExecuteReader();
if (reader != null && reader.HasRows)
{
newpass.Visible = true;
confpass.Visible = true;
Label1.Text = "New Password";
Label2.Text = "Confirm New Password";
SqlDataAdapter updates = new SqlDataAdapter("update reg set Password='" + newpass.Text + "'", con);
DataSet ds = new DataSet();
updates.Fill(ds);
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('The Password has been Changed')</script>");
con.Close();
}
}
}
'Fill' метод автоматически' open' соединение, и до того, что вы должны 'Close' предыдущее соединение. –
[Предупреждение SQL Injection] (http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - вы должны ** не ** объединить свои SQL-запросы - использовать ** параметризованные запросы ** вместо избежания SQL-инъекции –
Почему вы редактируете свой код? –