Anjuta + MySQL + C

anjuta J’ai jeté un oeil à Anjuta qui est une interface de développement sous linux intégrant le constructeur d’interface Glade.

Comme j’avais un peu de temps à perdre, je me suis dit qu’un petit essai ne coûtait rien. J’ai donc installé Anjuta-1.2.2 sur ma belle Ubuntu Hoary en m’assurant au préalable que j’avais bien tout sous la main (g++ et compagnie…)

Faire un essai en programme autonome pour n’afficher qu’un misérable « Hello World » n’ayant rien de bien amusant, je me suis lancé dans une petite connexion base de données. Au hasard, Mysql (version 4.01.x)!

En principe, l’installation du moteur mysql ne pose pas de problème.
Après installation, assurez vous de disposer en librairie de libmysqlclient12 et libmysqclient12-dev (pour les headers).

Vous trouverez alors le fichier mysql.h dans /usr/include/mysql, qui nous servira plus tard.

Vérifiez que votre $PATH inclut bien le répertoire contenant libmysqlclient.so. Dans le cas contraire, ajoutez l’emplacement dans /etc/ld.so.conf, et exécutez « ldconfig » en root pour reconfigurer vos liens symboliques.

Nous y sommes presque ! Reste juste une petite manipulation à opérer au niveau d’Anjuta.
Allez dans le menu « Préférences » -> « Compilateur/Editeur de liens… » -> « chemin des bibliothèques »
A cet endroit, indiquez « /usr/bin/mysql -lmysqlclient » puis Add et c’est tout ! (Faites gaffe si vous réouvrez le projet par la suite, il y a un petit bug et la ligne a une facheuse tendance à s’éclater sur deux lignes. Et ça, pour un build, c’est le mal puisque ça enchaine « -L/usr/bin/mysql -L/-lmysqlclient » au lieu de ce qui est indiqué ci-dessus).

Comme je ne suis pas chien, je vous mets un petit exemple bourrin histoire que vous voyez ce que ça peut faire éventuellement. A vous de créer une base et d’indiquer vos propres caractéristiques de user, password, nom de base, nom de colonne et nom de table. Enjoy 😉

#include <iostream>
#include <mysql/mysql.h>

int main()
{
MYSQL mysql;
MYSQL_RES* result;
MYSQL_ROW row;
MYSQL_FIELD* field;
int n_rows = 0;
int i,j;

if (! mysql_init (&mysql)){
printf("Erreur d'allocationn");
}

if (! mysql_real_connect(&mysql,"localhost","user","password","base",0,NULL,0)) {
printf("Erreur de connexionn");
}

mysql_query (&mysql,"SELECT votre_colonne FROM table");
result = mysql_store_result (&mysql);
n_rows = mysql_num_rows(result);

for(j=0; j<n_rows;j++){
i=0;
mysql_field_seek(result,0);
row = mysql_fetch_row(result);
while){
printf ("%s: ",field->name);
printf ("%sn ",rowi++);
}
printf("n");
}
mysql_free_result(result);
mysql_close(&mysql);
return 0;
}

Voilà pour le départ. Maintenant, si quelqu’un pouvait avoir la bonté d’âme de m’indiquer comment imbriquer deux requêtes (voir plus), ça m’intéresserait fortement. En effet, je ne suis pas encore parvenu à gérer plus d’un handle result.

Tadpu

Amatrice éclairée de nouvelles technologies. J'espère que mes quelques articles vous distrairont et vous éclaireront. Rédactrice de tadpu.com

3 réponses

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*