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; }
É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)
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) !