none
Actualizar Varias Tablas a la vez

    Întrebare

  • Tengo una pequeña duda.

    Estoy trabajando con windows form y en un formulario tengo que editar 3 tablas de una bd.

    Mi pregunta es como hacer esto, tendría que hacer 3 SqlCommand y cada uno pasarle la query del update y luego hacer ExecuteNonQuery por cada command, o se podría hacer la query en una misma consulta y solo crear un command.

    También en otro formulario tendría que insertar registros en las 3 tablas y mi duda es la misma como hacerlo.

    Las tablas no están relacionadas.


    23 iulie 2012 19:38

Răspunsuri

  • tendría que hacer 3 SqlCommand y cada uno pasarle la query del update

    tienes que hacer 3 sqlcommand y usar 3 ExecuteNonQuery  para eejcutar cada accion

    using (SqlConnection conn = new SqlConnection("connection string")) {
    	conn.Open();
    
    	for (int i = 0; i <= 3; i++) {
    		object spName = string.Format("V{0}-EA", i);
    
    		using (SqlCommand cmd = new SqlCommand(spName, conn)) {
    			cmd.CommandType = CommandType.StoredProcedure;
    
    			cmd.Parameters.AddWithValue("param1", valor1);
    			cmd.Parameters.AddWithValue("param1", valor2);
    
    			int rowsAffected = cmd.ExecuteNonQuery();
    
    			if (rowsAffected > 0) {
    				MessageBox.Show("se ha ejecutado correctamente");
    			} else {
    				MessageBox.Show("NO se ha ejecutado correctamente");
    			}
    		}
    	}
    
    	using (SqlCommand cmdFinal = new SqlCommand("sp_CalcularStock", conn)) {
    		cmdFinal.CommandType = CommandType.StoredProcedure;
    
    		cmdFinal.Parameters.AddWithValue("param1", valor1);
    
    		int rowsAffected = cmdFinal.ExecuteNonQuery();
    
    		if (rowsAffected > 0) {
    			MessageBox.Show("se ha ejecutado correctamente");
    		} else {
    			MessageBox.Show("NO se ha ejecutado correctamente");
    		}
    	}
    
    }

    ese es solo un ejemplo que obtuve de otro link, pero muestra como bajo la misma seccion de conexion ejecutas varios command para lanzar distintas queries o en este caso stored procedure

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    23 iulie 2012 19:49

Toate mesajele

  • Esta es más una pregunta de SQL Server, diría yo, pues la solución más elegante sería crear un view con las tres tablas (incluyendo todas las claves primarias y además todos los campos requeridos de las tablas) y hacer un único INSERT contra el view.  Una variante sería un trigger en el view tipo Instead Of Insert para obtener un poco más de flexibilidad.

    Jose R. MCP
    Code Samples

    23 iulie 2012 19:43
    Moderator
  • tendría que hacer 3 SqlCommand y cada uno pasarle la query del update

    tienes que hacer 3 sqlcommand y usar 3 ExecuteNonQuery  para eejcutar cada accion

    using (SqlConnection conn = new SqlConnection("connection string")) {
    	conn.Open();
    
    	for (int i = 0; i <= 3; i++) {
    		object spName = string.Format("V{0}-EA", i);
    
    		using (SqlCommand cmd = new SqlCommand(spName, conn)) {
    			cmd.CommandType = CommandType.StoredProcedure;
    
    			cmd.Parameters.AddWithValue("param1", valor1);
    			cmd.Parameters.AddWithValue("param1", valor2);
    
    			int rowsAffected = cmd.ExecuteNonQuery();
    
    			if (rowsAffected > 0) {
    				MessageBox.Show("se ha ejecutado correctamente");
    			} else {
    				MessageBox.Show("NO se ha ejecutado correctamente");
    			}
    		}
    	}
    
    	using (SqlCommand cmdFinal = new SqlCommand("sp_CalcularStock", conn)) {
    		cmdFinal.CommandType = CommandType.StoredProcedure;
    
    		cmdFinal.Parameters.AddWithValue("param1", valor1);
    
    		int rowsAffected = cmdFinal.ExecuteNonQuery();
    
    		if (rowsAffected > 0) {
    			MessageBox.Show("se ha ejecutado correctamente");
    		} else {
    			MessageBox.Show("NO se ha ejecutado correctamente");
    		}
    	}
    
    }

    ese es solo un ejemplo que obtuve de otro link, pero muestra como bajo la misma seccion de conexion ejecutas varios command para lanzar distintas queries o en este caso stored procedure

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    23 iulie 2012 19:49