Título: Base de Datos con MySQL desde C !Excelente! Publicado por: Fire544 en 10 Julio 2012, 20:56 pm Hola a todos !!! :xD Expongo el thread para algunos que se preguntan si existiria alguna API para el trabajo de BD en C del estandar ANSI.
Comento todo el codigo para una mejor comprension del lector. El compilador utilizado es Dev-c++. Con la inclusion de la lib windows.h ya pierde portablidad, pero la incluyo porque MySQL.h hace llamadas a sockets o sea winSock.h para poder establecer conexiones externas (ambiente Inet Global) y locales, la ventaja es que MySQL.h tambien esta para sistemas codigo abierto como Linux y Unix, pero en vez de windows.h habria que incluir otras librerias. Nota: Algunas funciones no las comento, porque casi hacen las mismas llamadas y creo que entenderian el por que, pero si tienen alguna duda no olviden postear y claro cirtiquen el codigo falta optimizacion, aa se me olvido hacer la estrcutura de mi codigo con retornos para mayor optimizacion pero bueno algo es algo xD. Salvedad: Doy por savido que los que lean este post es porque tienen conocimientos basicos de C y conocen bien los punteros a punteros y han trabajado con MySQL. Antes de leer el codigo vean esto: (MYSQL_RES *) es un identificador o variable que puede contener filas de un determinado campo en nuestra BD para poder luego consultar este. (MYSQL_ROW) es tipo puntero a puntero aunque no se haga uso de * pero si vemos como consultamos sus datos nos daremos cuenta, este acepta valores o elementos que se encuentran en "MYSQL_RES *" o sea lo que recojimos con "MYSQL_RES *" esta variable los puede manejar sin problemas. (MYSQL *) este acepta elementos o valores de un retorno a una variable del mismo tipo para luego enviar y recibir datos, o sea es quien nos envia, devuelve, conecta y desconecta del servidor MySQL. Código
Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: fabianjsm en 26 Agosto 2012, 23:16 pm Muy buen aporte!
Solo realizar esta aclaración: Dev-c++ no es un compilador, es un IDE, probablemente estes compilando con MinGW (podrías estar utilizando otro port como djgpp, o gcc sobre Linux, pero no lo creo en principio por el include <windows.h>... sin entrar en detalles, la explicación de porque la incluyes tampoco es correcta). Del sitio oficial: Bloodshed Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language. Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: Fire544 en 26 Agosto 2012, 23:27 pm Muy buen aporte! Solo realizar esta aclaración: Dev-c++ no es un compilador, es un IDE, probablemente estes compilando con MinGW (podrías estar utilizando otro port como djgpp, o gcc sobre Linux, pero no lo creo en principio por el include <windows.h>... sin entrar en detalles, la explicación de porque la incluyes tampoco es correcta). Del sitio oficial: Bloodshed Dev-C++ is a full-featured Integrated Development Environment (IDE) for the C/C++ programming language. La explicacion de porque la incluyo no es completa pero si correcta, entonces como ara las llamadas a winsock ? entiendo lo que quieres dejar dicho, pero Si claro Dev-c++ es un IDE Entorno de desarrollo eso esta claro, y claro que compila con GCC !! Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: fabianjsm en 27 Agosto 2012, 01:49 am Para utilizar una librería, no debes incluir todos los archivos de cabecera de las funciones que esta requiere internamente. No estas incluyendo windows.h para abrir sockets porque no los estas utilizando, no porque haya leído todo tu código fuente, sino porque asumo que lo has compilado antes de subir, el código compila correctamente, sino no lo subirías. Lo compilaste en Windows, por eso el include <windows.h>. Si estuvieras utilizando sockets en Windows deberías haber incluido el archivo de cabeceras para trabajar con ellos: winsock.h.
Probablemente sin “windows.h” no puedas compilar, pero lo aconsejable para compilar un cliente MySQL en Windows es que incluyas my_global.h, no windows.h directamente. http://dev.mysql.com/doc/refman/5.0/es/windows-client-compiling.html Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: BlackZeroX en 27 Agosto 2012, 04:50 am mmm veo que usas fflush(stdin); no creo que sea stdin por el contexto del codigo, mas bien es stdout fflush(stdout);
Dulces Lunas!¡. Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: flony en 27 Agosto 2012, 13:48 pm hace rato estaba buscando algo que me sirva de base para mi base de dato...me gustaría hacerlo pero en c++
Título: Re: Base de Datos con MySQL desde C !Excelente! Publicado por: Fire544 en 27 Agosto 2012, 15:11 pm Para utilizar una librería, no debes incluir todos los archivos de cabecera de las funciones que esta requiere internamente. No estas incluyendo windows.h para abrir sockets porque no los estas utilizando, no porque haya leído todo tu código fuente, sino porque asumo que lo has compilado antes de subir, el código compila correctamente, sino no lo subirías. Lo compilaste en Windows, por eso el include <windows.h>. Si estuvieras utilizando sockets en Windows deberías haber incluido el archivo de cabeceras para trabajar con ellos: winsock.h. Probablemente sin “windows.h” no puedas compilar, pero lo aconsejable para compilar un cliente MySQL en Windows es que incluyas my_global.h, no windows.h directamente. http://dev.mysql.com/doc/refman/5.0/es/windows-client-compiling.html Hey BlackZeroX (Astaroth) tienes mucha razon, si claro utilizo la libreria windows.h por el hecho de compilar en windows, lo que pasa es que windows.h hace llamadas a my_global.h muy buena la aclaracion, gracias BlackZeroX (Astaroth) !! ;-) |