miércoles, 10 de junio de 2009

MySql y C# Parte I

Bien, una de las grandes funciones que tiene la programación es crear aplicaciones que almacenen datos en Bases de datos, por esa razón, este apartado está dedicado a explicar como conectarnos a MySql (Una base de datos Gratuita) desde C# mediante la capa intermedia de OleDB, la cual es igual para todas las bases de datos del mundo, lo único que va a cambiar será el conection String que mas adelante explicamos a fondo.

Primero:
Necesitamos instalar la base de datos, para esto, puedes descargar MySql, en su ultima versión, o mejor dicho la mas resiente o bien descargar el Wamps, que es un administrador de servicios, que administra el servicio de la Base de Datos MySql, el servidor Apache y el Php simultáneamente.

Para descargar el Wamps dale clic al siguiente link (Si no funciona Copy/Paste la barra de navegación) .

También van a necesitar el Driver para conectarse por OledB lo descargan aqui, este permite conectarnos a la base de datos, existen tres formas posibles (bueno que yo conozca...)

El Oledb que acabo de mencionar
el ODBC, que es el mas antiguo
El Driver Nativo que es MySql.data que es propio para la base de datos.

Segundo:
Una vez instalado, también necesitamos una interface para conectarnos a la base de datos y crear nuestras bases de datos y tablas para eso, descargamos el Navicat desde aqui.

Desde el Navicat creamos una base de datos llamada data_colegio y una tabla de nombre Alumno, con los siguientes campos

RNE Varchar 15 (Primary Key)
Nombre Varchar 30
Apellido Varchar 30

Si tienes dudas de como usar el Navicat y el Wamps dale clic aqui

Una vez creada esta tabla entramos a C#, creamos un nuevo proyecto de Nombre cualquiera (en mi caso se llama Garrobito jejeje). y en la forma insertamos los controles necesarios para capturar los datos (Tres TextBox y tres Label). y un Botón con el nombre CmdGuardar (o el nombre que se les ocurra) .

Ahora insertamos un archivo de Clase, para esto, clic derecho en el explorador de objetos, pero nó en el solution y buscamos la opción Agregar (Add) y luego Clase (Class), le damos como nombre:
Funciones_Globales

Abrimos el archivo (Si es que no se abrió al crearlo) y en la parte de los using agregamos:
using System.Data;
using System.Data.OleDb;

Luego dentro de la clase, creamos un procedimiento publico de nombre AddAlumno de la siguiente forma:


public void AddAlumno(string id, string nombre, string apellido)
{
OleDbConnection cn = null;
OleDbTransaction tran = null;

try
{
///Si no se ve bien el texto, copia y pega el contenido en el blog de notas =)
cn = new OleDbConnection("Provider=MySQLProv; Data Source=data_colegio; User Id=root;Password=");
string query = "insert into alumno(RNE,NOMBRE, APELLIDO) values ('{0}','{1}','{2}')";
query = string.Format(query, id,nombre,apellido);

cn.Open();
OleDbCommand cmd = new OleDbCommand(query, cn);
cmd.ExecuteNonQuery();
cmd.Dispose();

}
catch (Exception ex)
{
throw ex;
}
finally
{
if (cn != null && cn.State != ConnectionState.Closed)
{
cn.Close();
cn.Dispose();
}
}

Lo salvamos y regresamos al Formulario en el evento clic del botón CmdGuardar escribimos:

Funciones_Globales Control = new Funciones_Globales();
try
{
Control.AddAlumno(MskRNE.Text, TxtNombre.Text, TxtApellido.Text);
MessageBox.Show("Se almacenaron los registros ");
}
catch (Exception er)
{
MessageBox.Show("Error al guardar los datos ");
}

y listo, en la buena teoría si siguieron todos los pasos debería de funcionar, explicando un poco el código:

Primera linea:
Funciones_Globales Control = new Funciones_Globales();
Declaramos una variable llama Control, de tipo Funciones_Globales (que es la clase) y la instanciamos en memoria.

Segunda Linea:
Abrimos el Try

Tercera Linea:
Llamamos el Método AddAlumno y le enviamos los tres argumentos que esta esperando, en mi caso mis controles son Un MasketEdit y dos textBox (observen los prefijos), y si todo está bien mostrará el mensaje de Se almacenaron los registros, en el caso que la función retorne un error el Catch la captura y muestra el mensaje Error al Guardar los datos

Por los momentos, solamente, espero este código les sirva.

31 comentarios:

  1. profe. como esta????tengo una duda!!! es verdad que hasta el primero de julio regresamos a clases

    ResponderEliminar
  2. Si hasta el 1 de Julio regresamos, pero este comentario no vale en la sumatoria de 5

    Saludos

    PD:
    Esté pendiente del foro

    ResponderEliminar
  3. hola profe, buen dia....
    le queria preguntar que cuando va a poner las tareas aca en el blog, las que dijo.!! por que si son bastantes quiero empezar ya. por que no voy a tener mucho tiempo-!! gracias y ahi me avisa entonces.--!!

    nos vemos.!

    ResponderEliminar
  4. buenos dias
    profe como esta, espero que bien
    profe queria saber si el proyecto que nos dejo lo vamos a tener que prersentar el 1ero de julio, y otra cosa que le queria preguntar que es lo que vamos a investigar

    gracias, buenos dias

    ResponderEliminar
  5. Mario:
    En estos dias lo agrego
    Josue Amaya:
    La primera entrega si.
    Saludos

    ResponderEliminar
  6. ok profe gracias.. pero siempre va a ser relacionado con la tarea anterior ?? o sea la segunda parte, no??

    ResponderEliminar
  7. Mario
    Mas o menos, algunas cosas pueden cambiar
    Saludos

    ResponderEliminar
  8. hola profe..! gracias por sus respuestas.!

    algo ke le keria konsultar es...: si ud sabe kuando vamos a hacer al fin los examenes..??

    ResponderEliminar
  9. profe descargue el wamps me pide password!!!!!!!!!
    cual es???????

    ResponderEliminar
  10. ay profe esa onda de programa me esta pidiendo el password y usted no lo dejo alli aver ni nos lo puede facilitar GRACIAS :)

    ResponderEliminar
  11. CReo que la clave es

    TheWizard
    o
    TheWizardhn

    En el foro no sale?
    ups....

    ResponderEliminar
  12. es el segundo profe....
    gracias!!!!!!
    mmmmm
    pero tengo unas dudas seria mejor en clases... pero gracias

    ResponderEliminar
  13. profe estaba leyendo y ahi donde dice "si tienes dudas de como utilizar el navicat dale click aki" ahi no sale nada de ningun link ¬¬ jejeje

    ResponderEliminar
  14. hey Wizard k tal komo esta??
    mire empiezo a trabajar kon el proyectito y empiezan a surgir las dudas y los problemas uno de ellos son estos :

    1) el visio que me salia en el office 07 el k ya viene predeterminado lo ejecuto y sale un error k no enkuentra un archivo ok busque por otros medios

    2) deskargue el visio desde internet 400 mb pesa me tarde un poko pero ya lo tengo y ahora k lo kiero instalar me pide k desinstale el oficce ok vamos a desinstalarlo

    3) me fui a kontrol panel, desinstalar un programa y le di al office y solo lo borro de los archivos para desinstalar y no lo desinstalo woww no entiendo komo paso eso pero bueno, para completar la tarea tengo k formatear la compu para no kedarle mal profe

    4) y la ultima solo es una pregunta:
    en el visio hago los eskemas de normalizacion??

    bueno profe me gustaria k me konteste lo mas pronto le llamo al cel y no kontesta y diskulpe si molesto jeje bueno kuidece kualkier kosa konsulto kon ute si nos vemos

    ResponderEliminar
  15. wizard kon respecto al programa de ejemplo tengo preguntas :

    . tengo 2 advertencias en el programa
    1= The Variable "er" is declared but never used
    el comando "catch" sale subrayado de verde
    2= The variable "tran" is assigned but its value is never used


    y bueno entiendo k el programa es :
    ingrese RNR:
    ingrese NOMBRE:
    ingrese APELLIDO:

    ingreso todo el registro nuevo y siempre me sale "Error al guardar los datos"

    El Navicat y el Wamps los tengo abiertos activos y todo pero no entiendoo pork no guarda los registros :S

    ResponderEliminar
  16. wizard sera k no me guarda pork no se conecta con mi tabla en este caso "Alumnos"?
    digo por k relei y dice OledB y pues no se k es eso yo trabaje kon los programas k me dio en el laboratorio
    k son:
    Navicat y el Wamps
    con esos basta o falta eso del OledB?
    ayudeme porfa wizard

    ResponderEliminar
  17. Buenas Wizard, k pasa k no me a konstado??
    ahhh anda de pachanga kon lo de la feria verdad jaja ta bueno xD :p

    bueno baje el OledB k la kontraseña es TheWizardhn

    ok lo instale y todo volvi al programa del ejemplo k estaba haciendo ingrese los datos
    kuando le di clip en guardar me abre una ventana automaticamente k es :

    MySQL Data Source Name Setup

    y me pide varias kosas komo ser :

    Data Source Name :
    MySQL Host :
    MySQL DataBase Name :
    User :
    Password :
    Port :
    SQL Command on Connect :

    ayuda en esta Wizard aki si la necesito un monton haber si voy mal o peor jeje kuidece saludes!

    ResponderEliminar
  18. Dfrost: Gracias...
    Manuel: Si, estoy trabajando en eso jejeje...

    ResponderEliminar
  19. J Crus 25:
    Disculpa pero mi cel ha estado malo, no es que no te he querido contestar...

    Si, vas a tener que formatear la PC, te recomiendo has dos particiones, la unidad C de unos 30 G (un poco mas si instalas juegos) y en la otra o otras la data.
    Si en Vision van a hacer el Diagrama de la normalización, las tablitas, por decirlo así con sus campos y todo eso, sale un apartado para ese tipo de gráficos, cualquier dudad, ahí me mandas un msg

    Saludos

    ResponderEliminar
  20. J cruz 25:
    Mmmmmmmmmmmmmmmmmmmm.....

    La primera de er, es porque se declaro pero nunca se le dio valor, solo comenta la linea
    La del catch, me imagino que es igual...

    Recuerda al guardar los datos tener las tablas cerradas, el navicat abierto pero sin abrir ninguna tabla ok?
    Igual con la variable tran no le hagas caso...

    Porque no te guarda....
    trata de meter valores pequeños como nombre=n, codigo =a, algo asi, sigue intentanto, a mi me funciona bien, instala el Oledb, no lo olvides

    voy a ver el ejemplo a ver que mas puedo explicar

    Saludos

    ResponderEliminar
  21. J cruz 25:
    Con lo ultimo de lo que te pide, debe ser algo que no configuraste bien, yo voy a ver y te aviso ok

    Saludos

    PD:
    Mandame tu programa para verlo...

    ResponderEliminar
  22. okz le voy a mandar el programa k tengo hecho a su hotmail

    ya formatie la kompu kn las respectivas particiones kedo todo cheke

    ya instale el visio todo perfecto pero no entiendo komo utilizar ese programa seria bueno k nos diera komo una tutoria sobre visio pork la verdad para mi ese programa es kompletamente nuevo :S

    wizard kreo k es posible k el problema se trate del OledB pork kuando lo instale no rekuero muy bien k me decia pero era algo k no se puede decir k kedo perfecta la intalacion ute me entiende komo programador !

    otra kosa kon respecto mañana si hay klases por lo k ute me dijo pero e eskuchado por korrientes k habran klases hasta el otro lunes nose komo esta eso :S

    una preguntita saliendo del tema todavia esta disponible lo de html?? esk kon estos disturbios k han habido nose si eso todavia kontinua si todavia estoy a tiempo de entrar o si ya termino no se, seria bueno k me de una respuesta por favor si, gracias wizard saludes y Bendiciones!

    ResponderEliminar
  23. JCruz Mi amigo, no he probado el ejemplo que me mandó pero lo mas seguro es que sea ese el problema

    Con lo de HTML, si, todavia hay espacio, pero va a tner que ponerse al dia, porque ya han visto bastante de HTMl y CSS

    Espero estudie

    Le recomiendo

    www.aulaclic.com

    Salu2

    ResponderEliminar
  24. Ajedrez

    Bueno posteo esta pequeña respuesta a este problema, creo k no solo yo lo he tenido, bueno se refiere al codigo que el profesor puso arriba, cuando se le da copy paste a las funciones globales y al momento de ejecutarlas tira este error: http://i44.tinypic.com/29blg8n.jpg el problema se debe a que la funcion Validar_posicion_peon() dentro de los parentesis no le mandas los argumentos correctamente, puede ser que esta declarado con 5 argumentos y le mandas 6, Imaginemonos que tenemos una funcion declarada asi:

    public int patito(int x, int y, int z)
    {
    int total;
    total=x+y+z;

    return total;

    }
    como pueden ver, la funcion se llama patito y recibe 3 argumento si?? y los retorna sumados

    Ahora bien si al momento de llamarla desde un formulario la llamamos asi:

    Funciones_Globales P=new Funciones_Globales();

    Int valor_total;

    valor_total=P.patito(3,29,5,6);

    Como observas, al momento de invocarlo le mandamos mas de los argumentos que el espera, por esa razón genera un error...

    espero haberles ayudado, yo tambien tube este problemita.
    -creditos: The Wizard

    saludos

    ResponderEliminar
  25. Manuel:
    Buen aporte, ahora posteo la validacion completa de los peones del ajedrez y luego el caballito, ve trabajando con la torre y el alfil

    Saludos

    ResponderEliminar
  26. Hola profe q tal...prfe el codigo q puso arriba m imagino q es para llamar la base d datos desde un formulario...y tambn usando un MDI...

    ResponderEliminar
  27. Profe,
    concuerdo con uno d los seguidores que dijo que no estaba el link para aprender a usar el MySql......Podria Subirlo?? Antes del examen para II de Computo??

    jejej solo para practicar en mi casa, ya q ya me pasó el wamps..


    Saludes

    Keep Rocking 4 ever & ever

    :::Bryan ArieL:::

    ResponderEliminar
  28. profe... string query = "insert into cliente..en esta linea usamos los nombre q tnemos en la base d datos creada???
    en esta linea...query = string.Format...alli dbemos d poner el nombre d los text????
    y otra cosa me dice q la variable tran nunk c utiliza pq pasa eso profe espero respuesta..
    grzz por tdooo

    ResponderEliminar
  29. prfe...m salieron 2 mesajes q la variable tran nunk se utiliza y la variable er tampoko..pq paso eso..???

    ResponderEliminar
  30. hola profe!! mire he stado kbradome la cabeza, he segido los pasos d arriba al pie de la letra i me sale error ia lo he repetido varias veces uno de ellos es:

    *en la parte del codigo k puso;Control.AddAlumno(MskRNE.Text

    me dice k el nombre MskRNE.Text no existe el contexto actual?

    *la segunda, buena me da como error, peo me sale k tran nunk se utiliza...spero sus respuestas

    ResponderEliminar
  31. Profe tengo un problema con el navicat, y es que ya se vencio, estuve buscando el crack pero nada, ademas lo baje del aqui del blog pero tampoco funciona, me preguntaba si podia subir el crack por favor

    ResponderEliminar