Maison > base de données > tutoriel mysql > Premiers pas avec MySQL : utiliser le langage C pour faire fonctionner MySQL

Premiers pas avec MySQL : utiliser le langage C pour faire fonctionner MySQL

黄舟
Libérer: 2017-01-19 15:49:28
original
2447 Les gens l'ont consulté

Concepts de base

Les API C sont incluses dans le fichier de bibliothèque mysqlclient, qui est distribué avec le code source MySQL et est utilisé pour se connecter à la base de données et effectuer des requêtes de base de données.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dlfcn.h>
#include <mysql/mysql.h>
int main()
{
    int     ret = 0;
    MYSQL   mysql;
    MYSQL   *con = NULL;
    con = mysql_init(&mysql);
    if (con == NULL)
    {
        ret = mysql_errno(&mysql);
        printf("func mysql_init() err :%d\n", ret);
        return ret;
    }
    //连接mysql服务器
    //MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, 
    //const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) ;
    con = mysql_real_connect(&mysql, "localhost", "root", "123456", "mydb2", 0, NULL, 0 );
    if (con == NULL)
    {
        ret = mysql_errno(&mysql);
        printf("func mysql_real_connect() err :%d\n", ret);
        return ret;
    }
    else
    {
        printf("func mysql_real_connect() ok\n");
    }
    mysql_close(&mysql);
    return ret;
}
Copier après la connexion

Étapes de programmation

1 Initialisez la bibliothèque MYSQL en appelant mysql_library_init()
2 Initialisez le gestionnaire de connexion en appelant mysql_init() et connectez-vous au serveur en appelant mysql_real_connect()
3 Émettez des instructions SQL et traitez leurs résultats
4 Fermez la connexion au serveur MYSQL en appelant mysql_close()
5 Terminez l'utilisation de la bibliothèque MYSQL en appelant mysql_library_end()

Compilation requis Remarque : Numéro 1 :
[mysql01@localhost dm01]$ gcc -o dm11_hello dm11_hello.c -I/usr/include/ -L/usr/lib64/mysql/ -lmysqlclient
/usr/lib64/mysql //libmysqlclient.a(net_serv.cc.o):(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0] 0x0) : référence non définie à __gxx_personality_v0'
/usr/lib64/mysql//libmysqlclient. a(password.c.o) : Dans functioncramble_323' :

Vous devez utiliser la bibliothèque dynamique c, ajoutez l'option -lstdc dans les options de compilation

Question 2
/usr/lib64 /mysql //libmysqlclient.a(dso_dlfcn.o) : Dans la fonction dlfcn_globallookup' :
dso_dlfcn.c:(.text 0x31) : référence non définie todlopen'
dso_dlfcn.c:(.text 0x44) : référence non définie to dlsym '
dso_dlfcn.c:(.text 0x4f) : référence non définie todlclose'
/usr/lib64/mysql//libmysqlclient.a(dso_dlfcn.o) : En fonction dlfcn_pathbyaddr' :
dso_dlfcn. c: (.text 0xa0) : référence non définie à dlerror'
dso_dlfcn.c:(.text 0x101) : référence non définie à dlerror'
/usr/lib64/mysql//libmysqlclient.a(dso_dlfcn.o) : Dans functiondlfcn_bind_func' :
dso_dlfcn.c:(.text 0x464) : référence non définie à `dlsym'

Pour les appels directs et inverses de la fonction de rappel, vous devez utiliser la bibliothèque de fonctions dl et ajouter le Option -ldl aux options de compilation

Question 3

thread_mutex_trylock'
/usr/lib64/mysql//libmysqlclient.a(my_thr_init.c.o) : En fonction my_thread_global_end' :
/pb2/build/sb_0 -12734909-1406113305.48/rpm/BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:214 : référence non définie topthread_key_delete'
/pb2/ build/sb_0-12734909-1406 113305.48 /rpm/BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:217 : référence non définie à pthread_mutexattr_destroy'
/pb2/build/ sb_0-12734909-1406113305.48/rpm/ BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:220 : référence non définie topthread_mutexattr_destroy'

La bibliothèque dynamique de MySQL utilise plusieurs threading, alors ajoutez-le à l'option de compilation -lpthread option

4 Question 4

[mysql01@localhost dm01]$ gcc -o dm11_hello dm11_hello.c -I/usr/include/ - L/usr/lib64/mysql/ - lmysqlclient -ldl -lstdc -lpthread
/usr/lib64/mysql//libmysqlclient.a(my_getsystime.c.o) : Dans la fonction my_getsystime' :
/pb2/build/sb_0 -12734909-1406113305.48/rpm/BUILD/ mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_getsystime.c:44 : référence non définie à clock_gettime'
collect2 : ld renvoie 1
[mysql01 @localhost dm01]$

Manque de bibliothèque dynamique d'exécution et de bibliothèque mathématique, ajoutez les options -lm et -lrt

Commande de compilation gcc complète :

gcc -o bonjour bonjour. c -I/usr/include/ mysql/ -L/usr/lib/i386-linux-gnu/ -lmysqlclient -lm -ldl -lstdc -lpthread -lrt

Écriture générale du Makefile

.PHONY:clean all
CC=gcc
CFLAGS=-Wall -g
LFLAGS=-L/usr/lib/i386-linux-gnu/ -lmysqlclient -ldl -lpthread -lm -lrt -lstdc++
BIN=hello 
all:$(BIN)
%.o:%.c
    $(CC) $(CFLAGS)  -c $<  -o   $@ 
hello:hello.o 
    $(CC) $(CFLAGS) $^  $(LFLAGS) -o  $@ 
clean:
    rm -f *.o $(BIN)
Copier après la connexion

Ce qui précède est l'introduction au langage MySQL C qui utilise MySQL. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal