private void Button1_Click(object sender, EventArgs e) { if (verificarUsuarioContraseñaValido()) { var creador = new AbmCliente.Form3(); creador.Closed += (s, arg) => { //hago un query para verificar que el cliente/proveedor fue efectivamente creado. //podria mirar si la form3 termino con exito tambien, pero como necesito hacer el query //de todas formas para conseguir el id hago todo con el query y listo if (!creador.finished) { Show(); return; } //@@IDENTITY me da el valor del ultimo insert de esta conexion, lo que esta bueno porque me ahorra //hacer algun query raro aca para conseguir el id del cliente/proveedor que acabo de insertar //si hay un insert en un trigger se romperia var id = util.tableQuery("SELECT @@IDENTITY").Rows[0].ItemArray[0].ToString(); util.execCommand("INSERT INTO Usuario (nombre,contraseña,rol,cliente,proveedor)" + "VALUES (@no,@co," + "(SELECT id FROM Rol WHERE nombre='Cliente')," + id + ",null)", "@no", nombre.Text, "@co", contraseña.Text); Close(); }; creador.Show(); Hide(); } }
private void Button1_Click(object sender, EventArgs e) { if (verificarUsuarioContraseñaValido()) { var creador = new AbmCliente.Form3(); creador.Closed += (s, arg) => { //hago un query para verificar que el cliente/proveedor fue efectivamente creado. //podria mirar si la form3 termino con exito tambien, pero como necesito hacer el query //de todas formas para conseguir el id hago todo con el query y listo if (!creador.finished) { Show(); return; } //@@IDENTITY me da el valor del ultimo insert de esta conexion, lo que esta bueno porque me ahorra //hacer algun query raro aca para conseguir el id del cliente/proveedor que acabo de insertar //si hay un insert en un trigger se romperia var id = util.tableQuery("SELECT @@IDENTITY").Rows[0].ItemArray[0].ToString(); //no uso util porque necesito pasar contraseña sanatizado Y en UTF8, y no puedo hacer las 2 cosas con //esa capa de abstraccion var command = new SqlCommand("INSERT INTO LOS_SIN_VOZ.Usuario (nombre,contraseña,rol,cliente,proveedor)" + "VALUES (@no,HASHBYTES('SHA2_256',@co)," + "(SELECT id FROM LOS_SIN_VOZ.Rol WHERE nombre='Cliente')," + id + ",null)", Program.con); command.Parameters.AddWithValue("@no", nombre.Text); command.Parameters.Add(new SqlParameter { SqlDbType = SqlDbType.VarChar, //c# pasa por default unicode, osea nvarchar ParameterName = "@co", Value = contraseña.Text }); command.ExecuteNonQuery(); Close(); }; creador.Show(); Hide(); } }