domingo, 1 de mayo de 2011

Aplicaciones en C# con bases de datos.

Justificacion:

Saber crear y manejar una aplicación en C# con capacidad para conectarse y hacer consultas a una base de datos real es muy importante en el campo laboral, pese a que en este tutorial se expondrá usando bases de datos de juegos, si se utiliza una base de datos seria, como por ejemplo de una empresa, puede facilitar la visualización de información vital.

Preparacion (Conceptos Basicos)

Aspectos generales:

Base de Datos: Conjunto de tablas, o tabla individual en la que se almacena información.

C#: Lenguaje de programacion de Windows, ambientado en .NET, combina los lenguajes Basic y C++.

Consulta: búsqueda de datos en la base de datos.

Aspectos de diseño:

ComboBox: botón que despliega multiples opciones, en este caso mostrara los juegos.

TextBox: area que contiene información, sea numérica o de texto, aquí la usaremos para mostrar los datos.

Label: es una etiqueta, la usaremos solamente para indicar los títulos de los TextBox.

CheckBox: es parecido a un label, solo que con la variación que tiene una casilla marcabla, si se marca ocurre una acción o evento, también se puede hacer que al desmarcarse ocurra otro evento u acción.

Codigo:

String: variable de tipo cadena, sirve para almacenar nombres y numerous, aunque con estos no se podran usar en operaciones matematicas.

Int: variable numerica, soporta los numeros enteros, el que se usa por defecto es el Int32.

While (mientras): condicional, mientras pase un evento se realizara la accion indicada, una variacion es el do/while.

If (Si): condicional, si pasa una determinada condición ocurrirá cierto evento u acción.

Return: método que devuelve una variable tras una acción.

New: método que nos permite instanciar (crear) nuevos objetos de una cierta clase.

Licencia:

Este programa y el tutorial fueron realizados por Miguel Alberto Sediles Di Quinzio, con fines educativos, puede ser usado por cualquiera que desee implementarlo

Pasos a seguir:

Lo primero será crear la base de datos, para esto se usaran los programas Access y MySql, es preferible este ultimo si se domina el lenguaje sql, este programa es muy básico, solamente hace consultas, los cambios deben realizarse en la misma base de datos.

A continuación un modelo de las bases de datos que usaremos en este tutorial.


Esta es la base de datos en MySql.




Y esta es la bade de datos en acces, es casi la misma solo que en la de MySql varie un poco los valores de los campos.


Modo 1: C# conectándose a base de datos en Access:

Lo primero será crear una clase en la que crearemos los comandos de conexión, en mi caso la llame bd por la abreviatura de base de datos.

Primero se crean 2 variables nuevas,



OleDbConnection conex;

//esto se llamara para hacer la conexion a la base de datos

OleDbDataReader lector;
esto permitira leer los datos de la base de datos

// Ahora se hace una funcion para conectar con la base de datos
public bd() {
conex = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source= D:\\juego\\juego.mdb");
}
// lo que le sigue al Data Source, es la direccion donde se encuentra la base de datos
public OleDbDataReader buscar(String cadena) {
OleDbCommand aCommand = new OleDbCommand(cadena, conex);
try {
conex.Open();
lector = aCommand.ExecuteReader();
// esto hace que se intente conectar con la base de datos
}
catch (Exception ex) {
Console.WriteLine("Ha ocurrido un error" + ex.GetType() + " es decir " + ex.ToString());
// Esto hace que si hay una excepción la capture e indique que tipo de error es
}
return lector;
//esto hace que devuelve lo que consultaste en la base dedatos
}
public int modificar(String cadena) {
// Con esto se puede hacer modificacioines a la bd
OleDbCommand insertCommand = new OleDbCommand(cadena, conex);
int registros = 0;
// esto permite hacer el inserts en la bd
try {
conex.Open();
registros = insertCommand.ExecuteNonQuery();
// con esto se insertan registros en la base de datos
}
catch (Exception ex) {
Console.WriteLine("Ha ocurrido un error" + ex.GetType() + " es decir " + ex.ToString());
//Esto hace que si se genera un error muestre un mensaje de aviso
}
return registros;
// regresa los valores que deseas a la base de datos,sean delete, insert o update
}
public void CerrarConexion() {
conex.Close();
}
Este metodo permite cerrar la conexion con la base de datos y evitar que se sobrecargue y ocurra un error
}
}


Y así terminamos con la clase, deberia quedarnos asi:






ahora vamos a trabajar con la realizacion del programa:

lo primero en este caso sera el comobo box, esto hara el llamado a la base de datos



private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) {
bd A = new bd();
esto es la conexion a la base de datos
OleDbDataReader pjs = A.buscar("select * from Juego where juego='" + comboBox1.SelectedItem.ToString()+"'");
// Con esto se traen todos los datos que coincidan con los datos precargados en el combo box, en este caso los juegos son los datos precargados y traera los personajes





listBox1.Items.Clear();

//asi en caso de que en el list box existiera algun elemento certificamos que solo aparesca lo que deseamos eliminando lo preexistente
while (pjs.Read()) {
listBox1.Items.Add(pjs.GetString(1));
}
// Esto hace que miestras lea (encuentre) en la base de datos elementos con el dato que seleccionamos lo agregue al list box
A.CerrarConexion();
// Cierra la conexion con la base de datos, para evitar errores del programa.
Button1.Enabled = true;
// esto hace presionable (que se pueda usar) el boton 1, que antes estaba bloqueado, asi se evitan posibles errores en el programa como intentar pasar un dato que no existe en el listbox
cargando();
//este es un metodo que muestra un progress bar rellenandose, da la sensacion o impresion de que se esta “cargando” algo, aunque en realidad pase en cuestion de segundos, mas adelante se explicara mas detenidamente
}
private void button1_Click(object sender, EventArgs e) {
if (listBox1.SelectedItem != null) {
cargando();
cambio();
// esto hace que si hay algo seleccionado en el list box (que contiene los nombres de los personajes en el juego en este caso) traiga esos datos al programa
//la funcion cambio se explicara mas adelante
bd B =new bd();
//conexion a la base de datos
OleDbDataReader pj = B.buscar("select * from Juego where PJ='" + listBox1.SelectedItem.ToString() + "' and juego='" + comboBox1.SelectedItem.ToString() + "'");
// Esto hace que traiga desde la base de datos los datos del personaje que elejimos (el elemento seleccionado del list box) y el juego (lo que seleccionamos en el combo box) y asi evitamos errores en caso de que un nombre se repita en ambos juegos
if(pj.Read()) {
textBox1.Text = B.buscar("select PJ from Juego where PJ='"+listBox1.SelectedItem.ToString()+"' && Juego='"+comboBox1.SelectedItem.ToString()+"'").GetString(1);
// la funcion buscar viene de la clase que ya hemos creado y permite hacer selects desde la base de datos, se debe colocar al final de la cadena sql de busqueda .getString para indicar que lo que trae lo convertira en un String (cadena de texto) para que pueda ser leido y mostrado en los textbox
textBox2.Text = B.buscar("Select Clase from Juego where Nombre del Pj='" + listBox1.SelectedItem.ToString() + "' AND WHERE Juego='" + comboBox1.SelectedItem.ToString() + "'").GetString(3);
textBox3.Text = B.buscar("Select Rol from Juego where Nombre del Pj='" + listBox1.SelectedItem.ToString() + "' AND WHERE Juego='" + comboBox1.SelectedItem.ToString() + "'").GetString(4);
textBox4.Text = B.buscar("Select Profesion from Juego where Nombre del Pj='" + listBox1.SelectedItem.ToString() + "' AND WHERE Juego='" + comboBox1.SelectedItem.ToString() + "'").GetString(5);
textBox5.Text = B.buscar("Select Servidor from Juego where Nombre del Pj='" + listBox1.SelectedItem.ToString() + "' AND WHERE Juego='" + comboBox1.SelectedItem.ToString() + "'").GetString(2);
// esto permite que se rellenen los text box correspondientes a los datos del personaje que seleccionamos, por ejemplo nombre, rol, profesion, etc.
// Los datos que provienen desde la base de datos se trabajan como si fuera un vector y cada posicion es un campo
Despues del .get string vienen los parentesis “()”, dentro de estos debe ir la posision en donde se encuentra el dato que queremos poner en el textbox en la tabla de la base de datos.
Por ejemplo en la tabla el nombre del personaje esta en la posicion 1, por eso se usa en el lugar donde ira el nombre .getString(1);
}
}
Else {
MessageBox.Show("NOOB SELECCIONA UN PJ X DIOS -.-''", "EPIC FAIL");
// En caso de que no hallas seleccionado nada pero un asi presionaste el boton muestra el mensage de error para que el usuario lo vea, en este caso (y como no es para fines “serios”) el mensaje es NOOB SELECCIONA UN PJ X DIOS -.-'' y el titulo es EPIC FAIL.
// Recuerden que en c# para hacer ventanas primero muestra el mensaje y si agregas una “,” mostrara el titulo que desees, puede ser una variable pasada a string (si es q no es un string) o como en este caso una cadena de texto





private void cargando()

// este es el comando que mencione antes del progress bar cargandose {
for (int X = 0; X < 100000; X++) //su programacion es sencilla dentro del progressbar se programa un contadoren el cual el numero final determina la velocidad de carga (mientras mas alto el numero mas tardara en cargar) { progressBar1.Visible = true; progressBar1.Value = X; // se hace visible el progrees para que se cae que esta “cargando” y se le dan los valores de la variable que se incrementa, en este caso X } progressBar1.Value = 0; progressBar1.Visible = false; // y cuando termina el contador se debuelve su valor a 0 y se oculta para que no interfiera con la visualizacion del programa. Esto es meramente ornamental y su funcionamiento no altera en nada al programa como tal, si lo desean pueden omitirlo } private void cambio() { listBox1.Visible = false; comboBox1.Visible = false; label1.Visible = false; label2.Visible = false; label3.Visible = false; button1.Visible = false; label4.Visible = true; label5.Visible = true; label6.Visible = true; label7.Visible = true; label8.Visible = true; checkBox1.Visible = true; checkBox2.Visible = true; ; button1.Visible = true; button2.Visible = false; button3.Visible = false; button4.Visible = false; textBox1.Visible = true; textBox2.Visible = true; textBox3.Visible = true; textBox4.Visible = true; textBox5.Visible = true; textBox6.Visible = false; textBox7.Visible = false; checkBox3.Visible = true; // este metodo tambien es muy sencillo y facil de hacer simplemente se juega con las visibilidades, todo lo que hasta ahora estaba visible se hace invisible y lo que estaba invisible se hace visible // lo que estaba invisible son los labels que indican los datos del pj y los datos en si que estan contenidos en los textbox y que previamente hemos traido desde la base de datos } private void button1_Click(object sender, EventArgs e) { cargando(); listBox1.Visible = true; comboBox1.Visible = true; label1.Visible = true; label2.Visible = true; label3.Visible = true; button1.Visible = true; label4.Visible = false; label5.Visible = false; label6.Visible = false; label7.Visible = false; label8.Visible = false; checkBox1.Visible = false; checkBox2.Visible = false; button1.Visible = false; button2.Visible = false; button4.Visible = false; button3.Visible = true; textBox1.Text = ""; textBox1.Visible = false; textBox2.Text = ""; textBox2.Visible = false; textBox3.Text = ""; textBox3.Visible = false; textBox4.Text = ""; textBox4.Visible = false; textBox5.Text = ""; textBox5.Visible = false; comboBox1.SelectedItem = " "; comboBox1.SelectedText = ""; listBox1.Items.Clear(); button3.Enabled = false; checkBox1.Checked = false; textBox6.Visible = false; checkBox2.Checked = false; textBox7.Visible = false; checkBox3.Visible =false; comboBox1.Text = " "; } // Este boton se hizo visible con el metodo “cambio” y su funcion es devolver el programa a com estaba en un principio y limpiar todos los datos que contienen los textbox, el comboox y el listbox y desmarcar los checkbox private void checkBox1_CheckedChanged(object sender, EventArgs e) { if (checkBox1.Checked ==true) { textBox6.Visible = true; // Esto permite que mediante otro llamado a la base de datos muestre los datos del personaje pero de manera selectiva, si deseas verlos los marcas y si no pues los dejas como estan, en este caso lo aplique para als armas principales y secundarias de los personajes bd c = new bd(); OleDbDataReader AP = c.buscar("select * from Juego where PJ='" + listBox1.SelectedItem.ToString() + "' and juego='" + comboBox1.SelectedItem.ToString() + "'"); if (AP.Read()) textBox6.Text = AP.GetString(6); } if (checkBox1.Checked == false) textBox6.Visible=false; // y esto permite que cuando lo desmarques se haga invisible } private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (checkBox2.Checked == true) { textBox7.Visible = true; bd c = new bd(); OleDbDataReader AP = c.buscar("select * from Juego where PJ='" + listBox1.SelectedItem.ToString() + "' and juego='" + comboBox1.SelectedItem.ToString() + "'"); if (AP.Read()) textBox7.Text = AP.GetString(7); } if (checkBox2.Checked == false) textBox7.Visible = false; // hace exactamente lo mismo que el primero } bd c = new bd(); OleDbDataReader AP = c.buscar("select * from Juego where PJ='" + listBox1.SelectedItem.ToString() + "' and juego='" + comboBox1.SelectedItem.ToString() + "'"); if (AP.Read()) MessageBox.Show(AP.GetString(8)); } } }




Modo 2: C# conectándose a base de datos de MySql en WampServer:


Ahora el mismo programa pero conectándose a una base de datos hecha con MySql y que esta contenida en WampServer.

En esencia es lo mismo, solo hay que cambiar unas cuantas líneas y funciona, pero es importante que tengamos instalado el “MySql Conector .NET” para que podamos hacer la conexión entre el MySql y el C#.

Lo primero será agregar la referencia MySql.Data, esto se hace en referencia y en la opción agregar referencia






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
// este ultimo “using” lo agregamos para poder hacer uso del MySql en nuestro programa, ahora si podemos empezar con el programa como tal.
namespace juego {
public partial class Form1 : Form {
// Primero crearemos la el conector (que en este caso llamare conexion) con el siguiente comando
MySqlConnection conexion = new MySqlConnection();
private String consulta;
// el String consulta contendrá la acción que deseamos hacer, en este caso un Select*, aunque es exactamente igual con datos específicos, solo hay que especificar los datos claro, por ejemplo se podría usar sin problemas un Select Nombre.
// El siguiente comando nos creara la “acción” de la consulta, recibirá la conexión y la orden de la consulta, si se desea omitir la creación del String anterior también es valido pasarle directamente la acción como cadena en lenguaje sql
MySqlCommand accion = new MySqlCommand();
public Form1() {
InitializeComponent();
direccion = "";
consulta = "";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e) {
// El funcionamiento es igual que el programa anterior, al seleccionar un ítem del ComboBox se rellenara el ListBox con los nombres de los personajes de el juego seleccionado, es recomendable hacerlo dentro de un “Try” como en la clase que nos permite conectarnos anteriormente para evitar posibles errores.
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
// como verán rellene el String direccion con la ubicación de la base de datos del wamp server, en estos casos se pasa de esta manera:
// 1) Server: lugar donde esta contenida la base de datos, en este caso Localhost
// 2) User Id: el nombre del usuario del wamp, por defecto es root
// 3) Database: como el nombre lo indica el nombre de la base de datos
// 4) Password: la contraseña de la base de datos (si es que tiene), en mi caso como no tiene se deja en blanco
conexion.ConnectionString = direccion;
// a “conexion” se le pasa la direccion mediante el comando ConnectionString, así sabe la ubicacion de la base de datos
conexion.Open();
// esto abre la conexion con la base de datos
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
// aquí llene el String consulta, ordenando que me traiga todo de la base de datos Juego donde el juego es lo que se haya seleccionado en el comboBox
accion.Connection = conexion;
// ahora a la “acción de conexion” se le pasa la ubicación de la base de datos para que haga la consulta
accion.CommandText = consulta;
// aquí es donde se le pasa la instrucción que debe realizar en la consulta.
MySqlDataReader lector = accion.ExecuteReader();
// Aquí declaramos un “lector” que será donde se almacene los resultados de la consulta, para luego se puedan mostrar.
// Este lector se iguala a la acción que ahora contiene tanto la conexión a la base de datos como a la cadena de búsqueda que se desea ejecutar y asi sabe exactamente lo que tiene que hacer y guardara los datos que consiga
listBox1.Items.Clear();
while (lector.Read()) {
lector.Read();
listBox1.Items.Add(lector.GetString(1));
// igual que en programa con conexión a Acces se agrega un “while” para pasar todos los nombres de los personajes al listBox
}
conexion.Close();
// tambien tenemos que cerrar la conexion para evitar problemas o errores por la conexión
cargando();
}
catch (MySqlException ex) {
MessageBox.Show("error" + ex, "fail");
}
// en este catch ponemos que si ocurre un error se camture y se muestre en un mensaje.
}
private void cargando() {
// Este metodo se mantiene igual que en el programa anterior
for (int X = 0; X < 100000; X++) {
progressBar1.Visible = true;
progressBar1.Value = X;
}
progressBar1.Value = 0;
progressBar1.Visible = false;
}
private void cambio() {
//Este metodo se mantiene igual que en el programa anterior
listBox1.Visible = false;
comboBox1.Visible = false;
label1.Visible = false;
label2.Visible = false;
label3.Visible = false;
label4.Visible = true;
label5.Visible = true;
label6.Visible = true;
label7.Visible = true;
label8.Visible = true;
checkBox1.Visible = true;
checkBox2.Visible = true;
;
button4.Visible = false;
textBox1.Visible = true;
textBox2.Visible = true;
textBox3.Visible = true;
textBox4.Visible = true;
textBox5.Visible = true;
textBox6.Visible = false;
textBox7.Visible = false;
button1.Visible = true;
}
private void button4_Click(object sender, EventArgs e) {
if (listBox1.SelectedItem != null) {
cargando();
cambio();
try {
direccion = "Server=localhost; User Id=root; Database=Juego ; Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
listBox1.Items.Clear();
if (lector.Read()) {
textBox1.Text = lector.GetString(1);
textBox2.Text = lector.GetString(3);
textBox3.Text = lector.GetString(5);
textBox4.Text = lector.GetString(8);
textBox5.Text = lector.GetString(2);
}
conexion.Close();
cargando();
// en este boton volvemos a colocar lo que vimos en el programa pasado, que me traiga los datos de los personajes y los muestre en los textBox, solo que le incluimos el catch para ver los posibles errores que surjan y resolverlos
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
} else {
MessageBox.Show("escoja un personaje");
}
}
// en este boton bolvemos a colocar lo que vimos en el programa pasado, que me traiga los datos de los personajes y los muestre en los textBox, solo que le incluimos el catch para ver los posibles errores que surjan y resolverlos
private void button1_Click(object sender, EventArgs e) {
cargando();
listBox1.Visible = true;
comboBox1.Visible = true;
label1.Visible = true;
label2.Visible = true;
label3.Visible = true;
label4.Visible = false;
label5.Visible = false;
label6.Visible = false;
label7.Visible = false;
label8.Visible = false;
checkBox1.Visible = false;
checkBox2.Visible = false;
button4.Visible = true;
textBox1.Text = "";
textBox1.Visible = false;
textBox2.Text = "";
textBox2.Visible = false;
textBox3.Text = "";
textBox3.Visible = false;
textBox4.Text = "";
textBox4.Visible = false;
textBox5.Text = "";
textBox5.Visible = false;
comboBox1.SelectedItem = " ";
comboBox1.SelectedText = "";
listBox1.Items.Clear();
checkBox1.Checked = false;
textBox6.Visible = false;
checkBox2.Checked = false;
textBox7.Visible = false;
button1.Visible = false;
// Este botón permite “volver” a empezar y hacer mas consultas
}
private void checkBox1_CheckedChanged_1(object sender, EventArgs e) {
if (checkBox1.Checked == true) {
textBox6.Visible = true;
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
if (lector.Read())
textBox6.Text = lector.GetString(6);
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
if (checkBox1.Checked == false)
textBox6.Visible = false;
}
// aquí aplicamos las mismas líneas que vimos antes pero solo cuando el checkBox cambie, igualmente se hará en checkBox siguiente
private void checkBox2_CheckedChanged_1(object sender, EventArgs e) {
if (checkBox2.Checked == true) {
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
if (lector.Read())
textBox6.Text = lector.GetString(7);
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
if (checkBox2.Checked == false)
textBox7.Visible = false;
}
}
}
Aquí tienen el codigo completo:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
namespace juego {
public partial class Form1 : Form {
MySqlConnection conexion = new MySqlConnection();
public String direccion;
private String consulta;
MySqlCommand accion = new MySqlCommand();
public Form1() {
InitializeComponent();
direccion = "";
consulta = "";
}
private void comboBox1_SelectedIndexChanged_1(object sender, EventArgs e) {
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
listBox1.Items.Clear();
while (lector.Read()) {
lector.Read();
listBox1.Items.Add(lector.GetString(1));
}
conexion.Close();
cargando();
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
private void cargando() {
for (int X = 0; X < 100000; X++) {
progressBar1.Visible = true;
progressBar1.Value = X;
}
progressBar1.Value = 0;
progressBar1.Visible = false;
}
private void cambio() {
listBox1.Visible = false;
comboBox1.Visible = false;
label1.Visible = false;
label2.Visible = false;
label3.Visible = false;
label4.Visible = true;
label5.Visible = true;
label6.Visible = true;
label7.Visible = true;
label8.Visible = true;
checkBox1.Visible = true;
checkBox2.Visible = true;
;
button4.Visible = false;
textBox1.Visible = true;
textBox2.Visible = true;
textBox3.Visible = true;
textBox4.Visible = true;
textBox5.Visible = true;
textBox6.Visible = false;
textBox7.Visible = false;
button1.Visible = true;
}
private void button4_Click(object sender, EventArgs e) {
if (listBox1.SelectedItem != null) {
cargando();
cambio();
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
listBox1.Items.Clear();
if (lector.Read()) {
textBox1.Text = lector.GetString(1);
textBox2.Text = lector.GetString(3);
textBox3.Text = lector.GetString(5);
textBox4.Text = lector.GetString(8);
textBox5.Text = lector.GetString(2);
}
conexion.Close();
cargando();
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
}
}
private void button1_Click(object sender, EventArgs e) {
cargando();
listBox1.Visible = true;
comboBox1.Visible = true;
label1.Visible = true;
label2.Visible = true;
label3.Visible = true;
label4.Visible = false;
label5.Visible = false;
label6.Visible = false;
label7.Visible = false;
label8.Visible = false;
checkBox1.Visible = false;
checkBox2.Visible = false;
button4.Visible = true;
textBox1.Text = "";
textBox1.Visible = false;
textBox2.Text = "";
textBox2.Visible = false;
textBox3.Text = "";
textBox3.Visible = false;
textBox4.Text = "";
textBox4.Visible = false;
textBox5.Text = "";
textBox5.Visible = false;
comboBox1.SelectedItem = " ";
comboBox1.SelectedText = "";
listBox1.Items.Clear();
checkBox1.Checked = false;
textBox6.Visible = false;
checkBox2.Checked = false;
textBox7.Visible = false;
button1.Visible = false;
}
private void checkBox1_CheckedChanged_1(object sender, EventArgs e) {
if (checkBox1.Checked == true) {
textBox6.Visible = true;
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
if (lector.Read())
textBox6.Text = lector.GetString(6);
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
if (checkBox1.Checked == false)
textBox6.Visible = false;
}
private void checkBox2_CheckedChanged_1(object sender, EventArgs e) {
if (checkBox2.Checked == true) {
try {
direccion = "Server=localhost; User Id=root; Database=Juego ;Password=";
conexion.ConnectionString = direccion;
conexion.Open();
consulta = "Select * from juegos where Juego='" + comboBox1.SelectedItem.ToString() + "'";
accion.Connection = conexion;
accion.CommandText = consulta;
MySqlDataReader lector = accion.ExecuteReader();
if (lector.Read())
textBox6.Text = lector.GetString(7);
}
catch (MySqlException ex) {
MessageBox.Show("das" + ex, "fail");
}
}
if (checkBox2.Checked == false)
textBox7.Visible = false;
}
}
}



Resultados:

Con este tutorial se espera poder haber demostrado como conectarse de manera basica a una base de datos Access o MySQL con una aplicacion C#, y crear una interfaz para mostrar su contenido. Ambos programas llegan al mismo resultado, se deverian poder visualizar los datos asi:











Ideas a Futuro:

Este programa podria completarse muy facilmente para que ademas de hacer consultas a la base de datos, realizara inserts (introducir datos), deletes (eliminar registros), drops(borrar tablas y bases de datos), update y alters(modificacion de datos y tablas)
Incluso se podria agregar un combo box que permita seleccionar con que base de datos se desea conectar y dependiendo de el tipo de base de datos se adapte para poder realizar la conexión, asi podria ser implementado facilmente por los usuarios y garantizando que se satisfascan sus necesidades con la base de datos

Autor:

Hecho por: Miguel Sediles
Cualquier otro es una imitacion del original XD

2 comentarios: