2013-06-26 3 views
0

Я просто не могу решить эту проблему. У меня есть простая страница с C# с формой, которая хранит некоторые данные в БД. Моя проблема заключается в том, что событие click срабатывает дважды, и поэтому хранит дважды мои данные. Я не могу найти нигде, где событие вызывается дважды. Любая помощь? Ty! (Это моя кнопка :)C# кнопка вставка вставки дважды

<div id="submit_buttons"> 
     <asp:Button id="btnAgregar" runat="server" Text="Enviar" CausesValidation="true" OnClick="btnAgregar_Click"/> 
    </div> 

И это мой код позади:

protected void btnAgregar_Click(object sender, CommandEventArgs e) 
    { 

     //insertamos proyectos 
     SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); 
     SqlCommand sqlComm = new SqlCommand(); 
     sqlComm = sqlConn.CreateCommand(); 
     sqlComm.CommandText = @"INSERT INTO proyectos (nombre, descripcion, archivo, idRegion, idCategoria) OUTPUT INSERTED.ID VALUES (@nombre,@descripcion, @archivo, @region, @categoria)"; 
     sqlComm.Parameters.Add("@nombre", SqlDbType.VarChar); 
     sqlComm.Parameters["@nombre"].Value = this.proy_nombre.Value; 

     sqlComm.Parameters.Add("@archivo", SqlDbType.VarBinary); 
     sqlComm.Parameters["@archivo"].Value = this.archivo.FileBytes; 

     sqlComm.Parameters.Add("@region", SqlDbType.Int); 
     sqlComm.Parameters["@region"].Value = this.cmbRegion.SelectedValue; 

     sqlComm.Parameters.Add("@categoria", SqlDbType.VarChar); 
     sqlComm.Parameters["@categoria"].Value = this.cmbCategoria.SelectedValue; 

     sqlComm.Parameters.Add("@descripcion", SqlDbType.Text); 
     sqlComm.Parameters["@descripcion"].Value = this.p_descripcion.Value; 

     sqlConn.Open(); 

     sqlComm.ExecuteNonQuery(); 
     int lastID = (int)sqlComm.ExecuteScalar(); 

     //insertamos concursantes 
     SqlCommand sqlCommConcursantes = new SqlCommand(); 
     sqlCommConcursantes = sqlConn.CreateCommand(); 
     sqlCommConcursantes.CommandText = @"INSERT INTO concursantes(nombre, email,titulo, idArea) OUTPUT INSERTED.ID VALUES (@nombre,@email, @titulo, @idArea)"; 
     sqlCommConcursantes.Parameters.Add("@nombre", SqlDbType.VarChar); 
     sqlCommConcursantes.Parameters["@nombre"].Value = this.c1_nombre.Value; 

     sqlCommConcursantes.Parameters.Add("@email", SqlDbType.VarChar); 
     sqlCommConcursantes.Parameters["@email"].Value = this.c1_email.Value; 

     sqlCommConcursantes.Parameters.Add("@titulo", SqlDbType.VarChar); 
     sqlCommConcursantes.Parameters["@titulo"].Value = this.c1_titulo.Value; 

     sqlCommConcursantes.Parameters.Add("@idArea", SqlDbType.Int); 
     sqlCommConcursantes.Parameters["@idArea"].Value = this.c1_area.Value; 

     sqlCommConcursantes.ExecuteNonQuery(); 
     int lastIDConcursantes = (int)sqlCommConcursantes.ExecuteScalar(); 

     //asociamos proyectos con concursantes. 
     SqlCommand sql = new SqlCommand(); 
     sql = sqlConn.CreateCommand(); 
     sql.CommandText = @"INSERT INTO proyectos_concursantes(idProyecto, idConcursante) VALUES (@idP,@idC)"; 
     sql.Parameters.Add("@idP", SqlDbType.Int); 
     sql.Parameters["@idP"].Value = lastID; 

     sql.Parameters.Add("@idC", SqlDbType.Int); 
     sql.Parameters["@idC"].Value = lastIDConcursantes; 

     sql.ExecuteNonQuery(); 

     sqlConn.Close(); 

     Response.Redirect("About.aspx");  

    } 
+0

да, извините, я пытался что-то и я забыл вернуть его, когда я разместил его. Отредактировано, ty :) –

ответ

4

Вы выполнить вашу команду дважды:

sqlComm.ExecuteNonQuery(); 
int lastID = (int)sqlComm.ExecuteScalar(); 
+0

OOH LOL! Я такой тупой. Thx lol, я этого никогда не видел, я забыл удалить эту строку. Я провел, как 2 часа, глядя, почему он не работает. Благодаря! –