Heim  >  Artikel  >  Datenbank  >  Erste Schritte mit MySQL: Verwendung der C-Sprache zum Betreiben von MySQL

Erste Schritte mit MySQL: Verwendung der C-Sprache zum Betreiben von MySQL

黄舟
黄舟Original
2017-01-19 15:49:282378Durchsuche

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)

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn