La clase que utilizaremos ahora será MySqlCommand y nuestra primera consulta, será una inserción sobre la base de datos. Insertaremos un registro más. La secuencia de pasos a efectuar es la siguiente:
Ampliando nuestro ejemplo, quedaría así:
public static void Main(string[] args) { MySqlConnection conexion = new MySqlConnection(); conexion.ConnectionString = "database=linuxhispano; server=localhost;user id=root; pwd=contraseña"; conexion.Open(); try { string consulta = "INSERT INTO ejemplo (numero , tema) VALUES ('27', 'Sonido')"; MySqlCommand comando = new MySqlCommand(consulta); comando.Connection = conexion; int resultado = comando.ExecuteNonQuery(); Console.WriteLine("Filas afectadas : " + resultado.ToString()); } catch(MySqlException exc) { Console.WriteLine("Ocurrió un error : " + exc.Message); } finally { conexion.Close(); } }
Como se puede apreciar, hemos cuidado que se finalice la conexión aunque existan errores, con finally y hemos controlado los posibles errores que aparezcan. En nuestro caso debería decir: “Filas afectadas: 1”, puesto que la inserción sólo realiza una.
A la hora de realizar la inserción podríamos haber utilizado MySqlParameter, que nos provee de un mejor tratamiento de los datos de cara a mejorar la seguridad y ampliar las posibilidades, pero se escapaba del carácter introductorio de este texto.
Como veis hemos ejecutado el comando con el método ExecuteNonQuery que utilizaremos para operaciones de inserción, borrado y actualización. En el caso de consultas como tales con SELECT, utilizaremos ExecuteReader y en el caso que veremos a continuación, cuando trabajamos con escalares ExecuteScalar. No siempre es así y depende de lo que vayamos a hacer varía el método pero para este punto nos vale.
Las consultas que devuelven escalares son aquellas que devuelven un sólo número, por ejemplo, si preguntamos a la base de datos que nos cuente cuántas filas hay en la tabla. Veamos este ejemplo, el proceso es el mismo pero utilizamos ahora el método ExecuteScalar y cambiamos convenientemente la consulta. Utilizaremos el constructor de MySqlCommand para inicializar con la consulta y la conexión el objeto, de forma que nos ahorremos una sentencia:
public static void Main(string[] args) { MySqlConnection conexion = new MySqlConnection(); conexion.ConnectionString = "database=linuxhispano; server=localhost;user id=root; pwd=contraseña"; conexion.Open(); try { MySqlCommand comando = new MySqlCommand ("SELECT COUNT(*) FROM ejemplo", conexion); string resultado = comando.ExecuteScalar().ToString(); Console.WriteLine("Filas en la tabla : " + resultado); } catch(MySqlException exc) { Console.WriteLine("Ocurrió un error : " + exc.Message); } finally { conexion.Close(); } }
La salida por consola debe ser “Filas en la tabla: 3”. Finalmente, veamos cómo recorrer hacia adelante la tabla con ExecuteReader(). La metodología a seguir es ejecutar el comando con este método y posteriormente, imprimir por pantalla el resultado que va devolviendo el lector mientras haya filas que recorrer. El código lo tenéis a continuación:
public static void Main(string[] args) { MySqlConnection conexion = new MySqlConnection(); conexion.ConnectionString = "database=linuxhispano; server=localhost;user id=root; pwd=contraseña"; conexion.Open(); try { MySqlCommand comando = new MySqlCommand ("SELECT tema FROM ejemplo", conexion); MySqlDataReader lector = comando.ExecuteReader(); while(lector.Read()) { Console.WriteLine(lector.GetString(0)); } lector.Close(); } catch(MySqlException exc) { Console.WriteLine("Ocurrió un error : " + exc.Message); } finally { conexion.Close(); } }
El resultado debería ser en tres líneas distintas, los tres temas que hay presentes en estos momentos en la base de datos. Pasadas estas primeras operaciones, en el siguiente punto vamos a rellenar un DataSet con los datos de la base de datos y vamos a recorrerlo a través de las clases: DataTable, DataColumn y DataRow antes de dar por terminado este artículo.
https://www.youtube.com/embed/z-xGk9c_eOw Guionista y locutor: Manuel Ignacio López Quintero.Fecha de publicación: 31 de diciembre de 2024.
Ver comentarios