Categorías: Tutoriales

Curso ADO.NET con Mono y MySQL – Primeras consultas

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:

  1. Creamos la consulta y la asignamos a una cadena
  2. Creamos el comando con la consulta que acabamos de crear
  3. Asignamos la conexión pertinente al comando
  4. Lo ejecutamos

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.

F. Javier Carazo Gil

Cofundador de CODECTION, empresa especializada en WordPress, autor de un libro sobre WordPress (el primero en español) y multitud de artículos (en medios físicos y virtuales) sobre el tema. Participa en la comunidad WordPress de forma activa siendo parte del equipo organizador de la WordPress Meetup de Córdoba, dando charlas en diferentes WordCamp y siendo autor y coautor de multitud de plugins libres y premium para WordPress de gran éxito.

Ver comentarios

Entradas recientes

DeepSeek

2 días hace

Contacto

2 semanas hace

Smart-tv mute

2 semanas hace

STEAM OS

3 semanas hace

2025

4 semanas hace

El podcast de Linux Hispano – #072 – El hardware libre debe consolidarse como el software libre

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.

1 mes hace