[C con Clase] Aprendiendo MySQL + API C

Salvador Pozo Coronado salvador en conclase.net
Jue Feb 23 11:21:28 CET 2017


Estimada Carolina,

Con fecha jueves, 23 de febrero de 2017, 3:06:59, escribió:

CH>   
CH>  
CH> Muchísimas gracias Salvador!!! De verdad te agradezco por todo el
CH> esfuerzo que haces por ayudarme :)
CH>  
CH>  Estaré atenta esperando por los archivos, pero mientras revisaré lo que me comentas del SQLite ;)


Hola:

Esto  es lo que he descubierto hasta ahora. Probablemente se convierta
en varios artículos en la página de "Con Clase", espero que pronto.

Opción 1

Instalar un compilador de 64 bits.

a)     Descargar     el    compilador    desde    TDM-GCC    64    bit
(http://tdm-gcc.tdragon.net/download)   
b) Instalar el compilador en el ordenador.
c) Configurar Code::Blocks para usar el nuevo compilador.
d) Crear la librería de enlace estático de 64 bits.
e)  Copiar  los  ficheros  de  cabecera y las librerías en los lugares
adecuados.  
f) Crear programas con acceso a MySQL.

Los pasos a y b son triviales.
Para  configurar Code::Blocks seguir las instrucciones de este enlace:
http://forums.codeblocks.org/index.php?topic=21570.0          
Para  crear el fichero libmysql.a de 64 bits, seguir las instrucciones
de          la          página          de          Con         Clase:
http://c.conclase.net/mysql/index.php?cap=000b#inicio    
La  única  diferencia  es  que  se  deben  usar  las  versiones de los
programas  reimp.exe,  dlltool.exe y as.exe incluidas en el compilador
de 64 bits.           
En  este caso no es necesario retocar el fichero .def generado, ya que
no necesita la "decoración" @n para cada función.                         
Copiar los ficheros de cabecera en la ruta del nuevo compilador, en la
carpeta "include". Usar una carpeta separada llamada "mysql".             
Copiar el fichero libmysql.a a la carpeta "lib" del nuevo compilador.
Cuando  se  cree  el  proyecto  para  la  aplicación que use MySQL, no
olvidar  incluir  en  "Build  options"  del proyecto, en la pestaña de
"Linker settings", "Link libraries" las cadenas "mysql" y "ws2_32".

Opción  2

Usar el compilador de 32 bits MinGW

a) Crear la librería de enlace estático de 32 bits.
b)  Copiar  los  ficheros  de  cabecera y las librerías en los lugares
adecuados. 
c) Crear programas con acceso a MySQL.

Aunque parezca más sencillo, esta opción presenta algunos inconvenientes.
Crear  la  librería,  usando  las  versiones  de 32 bits de reimp.exe,
dlltool.exe  y  as.exe  no  es  tan  simple, ya que hay que retocar el
fichero .def generado antes de generar el fichero libmysql.a.  
Esto  implica  editar  cada  línea  del  fichero  .def  para añadir la
"decoración", que consiste en un carácter '@' seguido de un número. 
El  número  corresponde  al  número  de  parámetros  de la función que
aparece en la línea, multiplicado por cuatro.  
Por  ejemplo, "mysql_autocommit" se convierte en "mysql_autocommit en 8",
ya que esta función tiene dos parámetros. 
Otro      ejemplo,     "mysql_change_user"     se     convierte     en
mysql_change_user en 16, porque esta función tiene cuatro parámetros.           
Para  saber cuantos parámetros tiene cada función hay que buscarlas en
el fichero "mysql.h", y contarlos.                
El fichero de librería obtenido libmysql.a se copia a la carpeta "lib"
del  compilador,  que  generalmente se encuentra en la carpeta "MinGW"
donde hayamos instalado Code::Blocks.  
Los ficheros de cabecera se copian a la carpeta "include", en la misma
ruta, y en una carpeta específica "mysql".  
En  las  opciones  del linker del proyecto también hay que incluir las
librerías "mysql" y "ws2_32".  

En  ambos  casos,  el  fichero  "libmysql.dll"  debe ser accesible por
nuestra  aplicación,  por lo tanto, debe estar en una carpeta incluida
en  la  variable  de entorno "PATH", o en la misma carpeta que nuestra
aplicación.    

Incluyo varios ficheros adjuntos, para ahorrar trabajo ;-)

include.zip: contiene los ficheros de cabecera de mysql
libmysql_def.zip: fichero .def de 32 bits, decorado.
libmysql_a.zip: fichero de enlace estático de 32 bits.
libmysql_dll.zip: fichero dll
libmysql_lib.zip: fichero de enlace estático versión Microsoft
libmysql_def_64.zip: fichero .def de 64 bits, no necesita decoración.
libmysql_a_64.zip: fichero de enlace estático de 64 bits.

Enlace de descarga:
https://mega.nz/#F!KYhwFaQI

Clave de cifrado:
!E-cgnMdHbbM7dxhMfM6_0w


He probado las dos versiones, de 32 y 64 bits con el motor de bases de
datos  que tengo instalado, MaríaDB, y funciona perfectamente. Debería
funcionar con cualquier versión relativamente reciente de MySQL.

Por  último,  si  tu  proyecto  no  necesita  cosas  como  permisos  y
privilegios,     claves    foráneas,    procedimientos    almacenados,
disparadores, etc. Una buena opción es SQLite.

Hasta pronto.
-- 
Saludos,
Salvador  mailto:salvador en conclase.net
Con Clase:  http://www.conclase.net
Blog con Clase: http://blogconclase.wordpress.com





Más información sobre la lista de distribución Cconclase