Grundlegende Konzepte
C-APIs sind in der Bibliotheksdatei mysqlclient enthalten, die zusammen mit dem MySQL-Quellcode veröffentlicht wird und zum Herstellen einer Verbindung zur Datenbank und zum Durchführen von Datenbankabfragen verwendet wird.
#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; }
Programmierschritte
1 Initialisieren Sie die MYSQL-Bibliothek durch Aufruf von mysql_library_init()
2 Initialisieren Sie den Verbindungshandler durch Aufruf von mysql_init() und stellen Sie eine Verbindung zum Server durch Aufruf von mysql_real_connect() her
3 Geben Sie SQL-Anweisungen aus und verarbeiten Sie deren Ergebnisse.
4 Schließen Sie die Verbindung zum MYSQL-Server, indem Sie mysql_close() aufrufen.
5 Beenden Sie die Verwendung der MYSQL-Bibliothek, indem Sie mysql_library_end() aufrufen.
Kompilierung erforderlich Hinweis: Problem 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): undefinierter Verweis auf __gxx_personality_v0'
/usr/lib64/mysql//libmysqlclient .a(password.c.o): In Funktionencramble_323':
Sie müssen die dynamische C++-Bibliothek verwenden und die Option -lstdc++ in den Kompilierungsoptionen hinzufügen
Frage 2
/usr/ lib64/ mysql//libmysqlclient.a(dso_dlfcn.o): In Funktion dlfcn_globallookup':
dso_dlfcn.c:(.text+0x31): undefinierte Referenz todlopen'
dso_dlfcn.c:(.text+0x44) : undefinierter Verweis auf dlsym'
dso_dlfcn.c:(.text+0x4f): undefinierter Verweis todlclose'
/usr/lib64/mysql//libmysqlclient.a(dso_dlfcn.o): In function dlfcn_pathbyaddr':
dso_dlfcn.c:(.text+0xa0): undefinierter Verweis auf todladdr'
dso_dlfcn.c:(.text+0x101): undefinierter Verweis auf dlerror'
/usr/lib64/mysql//libmysqlclient.a (dso_dlfcn .o): In functiondlfcn_bind_func':
dso_dlfcn.c:(.text+0x464): undefinierter Verweis auf „dlsym“
Für Vorwärts- und Rückwärtsaufrufe der Callback-Funktion müssen Sie verwenden die dl-Funktionsbibliothek. Fügen Sie die Option -ldl zu den Kompilierungsoptionen
Frage 3
thread_mutex_trylock'
/usr/lib64/mysql//libmysqlclient.a(my_thr_init.c.o) hinzu: In Funktion 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: undefinierte Referenz topthread_key_delete '
/pb2/ build/sb_0-12734909-1406113305.48/rpm/BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:217: undefinierter Verweis auf 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: undefinierte Referenz topthread_mutexattr_destroy'
Die dynamische Bibliothek von MySQL wird häufig in Threads verwendet. Fügen Sie daher die Option -lpthread zu den Kompilierungsoptionen hinzu
4. I/usr/include/ -L/ usr/lib64/mysql/ -lmysqlclient -ldl -lstdc++ -lpthread
/usr/lib64/mysql//libmysqlclient.a(my_getsystime.c.o): In Funktion 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: undefinierte Referenz aufclock_gettime'
collect2: ld gibt 1 zurück
[mysql01@localhost dm01]$
Mangel an dynamischer Laufzeitbibliothek und Mathematikbibliothek, Optionen -lm und -lrt hinzufügen
Kompilierungsbefehl für gcc abschließen:
gcc -o hello hello.c -I/usr/include/mysql/ -L/usr/lib/i386-linux-gnu/ -lmysqlclient -lm -ldl -lstdc++ -lpthread -lrt
Allgemeines Makefile Schreiben
Das Obige ist der Inhalt der C-Sprache für den Betrieb von MySQL für den Einstieg in MySQL. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!.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)