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.
Ver comentarios