[C#] Validar instrucción ABM con ExecuteNonQuery()

Introducción

En este articulo les voy a mostrar como poder validar cuando insertamos, modificamos o eliminamos un registro en una tabla de la base de datos. Estas instrucciones debemos ejecutarlas con el método ExecuteNonQuery() del objeto SqlCommand.

Procedimiento

El método ExecuteNonQuery devuelve el numero de filas afectadas en la instrucción. Por lo cual, si insertamos un nuevo registro nos va a devolver 1. Ocurre lo mismo si modificamos o eliminamos.

Esto ocurre si escribimos la instrucción desde nuestro proyecto de la siguiente manera:

Ejemplo de Alta:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "INSERT INTO Persona VALUES(@Nombre,@Apellido)";
                SqlCommand cmd = new SqlCommand(ConsultaAlta,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Modificar

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaModificar = "UPDATE Persona SET Nombre=@Nombre,Apellido@Apellido WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaModificar,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Baja

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaEliminar = "DELETE FROM Persona WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaEliminar, cnn);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Pero hay veces, que nosotros preferimos utilizar un procedimiento almacenado y llamarlo desde nuestro código:


Ejemplo de Alta

            using (SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "AltaPersonaSP";
                SqlCommand cmd = new SqlCommand(ConsultaAlta, cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.ExecuteNonQuery();
            }

y nuestro procedimiento almacenado tiene la siguiente sintaxis:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT ON;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Probablemente este procedimiento almacenado va a devolver -1 en ves de 1, este es un problema que muchos usuarios tienen. El problema esta en la instrucción SET NOCOUNT ON que hace que no se cuenten la cantidad de registros afectados. Para que dicho procedimiento almacenado devuelva los registros afectados debemos poner dicha instrucción en OFF por lo cual quedaría:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT OFF;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Este error suele ocurrir porque el SQL Management Studio nos crea una sintaxis por default cuando queremos crear nuestro procedimiento almacenado y dejamos dicha instrucción.

Ahora, para validar si la instrucción se ejecuto correctamente debemos hacer una condición con el valor devuelto de nuestro método ExecuteNonQuery() por lo cual debemos agregar en las instrucciones anteriores:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string Consulta = "Query";
                SqlCommand cmd = new SqlCommand(Consulta , cnn);

                int val = Convert.ToInt32(cmd.ExecuteNonQuery());

                if (val > 0)
                {
                    //Instruccion OK
                }
            }
Fin

[C#] Validar instrucción ABM con ExecuteNonQuery()

Introducción

En este articulo les voy a mostrar como poder validar cuando insertamos, modificamos o eliminamos un registro en una tabla de la base de datos. Estas instrucciones debemos ejecutarlas con el método ExecuteNonQuery() del objeto SqlCommand.

Procedimiento

El método ExecuteNonQuery devuelve el numero de filas afectadas en la instrucción. Por lo cual, si insertamos un nuevo registro nos va a devolver 1. Ocurre lo mismo si modificamos o eliminamos.

Esto ocurre si escribimos la instrucción desde nuestro proyecto de la siguiente manera:

Ejemplo de Alta:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "INSERT INTO Persona VALUES(@Nombre,@Apellido)";
                SqlCommand cmd = new SqlCommand(ConsultaAlta,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Modificar

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaModificar = "UPDATE Persona SET Nombre=@Nombre,Apellido@Apellido WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaModificar,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Baja

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaEliminar = "DELETE FROM Persona WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaEliminar, cnn);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Pero hay veces, que nosotros preferimos utilizar un procedimiento almacenado y llamarlo desde nuestro código:


Ejemplo de Alta

            using (SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "AltaPersonaSP";
                SqlCommand cmd = new SqlCommand(ConsultaAlta, cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.ExecuteNonQuery();
            }

y nuestro procedimiento almacenado tiene la siguiente sintaxis:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT ON;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Probablemente este procedimiento almacenado va a devolver -1 en ves de 1, este es un problema que muchos usuarios tienen. El problema esta en la instrucción SET NOCOUNT ON que hace que no se cuenten la cantidad de registros afectados. Para que dicho procedimiento almacenado devuelva los registros afectados debemos poner dicha instrucción en OFF por lo cual quedaría:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT OFF;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Este error suele ocurrir porque el SQL Management Studio nos crea una sintaxis por default cuando queremos crear nuestro procedimiento almacenado y dejamos dicha instrucción.

Ahora, para validar si la instrucción se ejecuto correctamente debemos hacer una condición con el valor devuelto de nuestro método ExecuteNonQuery() por lo cual debemos agregar en las instrucciones anteriores:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string Consulta = "Query";
                SqlCommand cmd = new SqlCommand(Consulta , cnn);

                int val = Convert.ToInt32(cmd.ExecuteNonQuery());

                if (val > 0)
                {
                    //Instruccion OK
                }
            }
Fin

[C#] Validar instrucción ABM con ExecuteNonQuery()

Introducción

En este articulo les voy a mostrar como poder validar cuando insertamos, modificamos o eliminamos un registro en una tabla de la base de datos. Estas instrucciones debemos ejecutarlas con el método ExecuteNonQuery() del objeto SqlCommand.

Procedimiento

El método ExecuteNonQuery devuelve el numero de filas afectadas en la instrucción. Por lo cual, si insertamos un nuevo registro nos va a devolver 1. Ocurre lo mismo si modificamos o eliminamos.

Esto ocurre si escribimos la instrucción desde nuestro proyecto de la siguiente manera:

Ejemplo de Alta:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "INSERT INTO Persona VALUES(@Nombre,@Apellido)";
                SqlCommand cmd = new SqlCommand(ConsultaAlta,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Modificar

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaModificar = "UPDATE Persona SET Nombre=@Nombre,Apellido@Apellido WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaModificar,cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Ejemplo de Baja

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaEliminar = "DELETE FROM Persona WHERE CodPersona=@CodPersona";
                SqlCommand cmd = new SqlCommand(ConsultaEliminar, cnn);
                cmd.Parameters.AddWithValue("@CodPersona", VariableCodigoPersona);

                cmd.ExecuteNonQuery();
            }

Pero hay veces, que nosotros preferimos utilizar un procedimiento almacenado y llamarlo desde nuestro código:


Ejemplo de Alta

            using (SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string ConsultaAlta = "AltaPersonaSP";
                SqlCommand cmd = new SqlCommand(ConsultaAlta, cnn);
                cmd.Parameters.AddWithValue("@Nombre", VariableNombre);
                cmd.Parameters.AddWithValue("@Apellido", VariableApellido);

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.ExecuteNonQuery();
            }

y nuestro procedimiento almacenado tiene la siguiente sintaxis:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT ON;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Probablemente este procedimiento almacenado va a devolver -1 en ves de 1, este es un problema que muchos usuarios tienen. El problema esta en la instrucción SET NOCOUNT ON que hace que no se cuenten la cantidad de registros afectados. Para que dicho procedimiento almacenado devuelva los registros afectados debemos poner dicha instrucción en OFF por lo cual quedaría:

CREATE PROCEDURE AltaPersonaSP
 @Nombre varchar(50),
 @Apellido varchar(50)
AS
BEGIN
 SET NOCOUNT OFF;

 INSERT INTO Persona(Nombre,Apellido) VALUES(@Nombre,@Apellido)
END
GO

Este error suele ocurrir porque el SQL Management Studio nos crea una sintaxis por default cuando queremos crear nuestro procedimiento almacenado y dejamos dicha instrucción.

Ahora, para validar si la instrucción se ejecuto correctamente debemos hacer una condición con el valor devuelto de nuestro método ExecuteNonQuery() por lo cual debemos agregar en las instrucciones anteriores:

            using(SqlConnection cnn = new SqlConnection("NUESTRA-CADENA"))
            {
                cnn.Open();

                string Consulta = "Query";
                SqlCommand cmd = new SqlCommand(Consulta , cnn);

                int val = Convert.ToInt32(cmd.ExecuteNonQuery());

                if (val > 0)
                {
                    //Instruccion OK
                }
            }
Fin


No hay comentarios. :

Publicar un comentario