Heim  >  Artikel  >  Backend-Entwicklung  >  So verbinden Sie C mit MySQL

So verbinden Sie C mit MySQL

(*-*)浩
(*-*)浩Original
2019-05-11 13:41:134675Durchsuche

Dieser Artikel verwendet die Umgebung: win7 x64, vs2008, mysql als Beispiel, um zu erklären, wie C eine Verbindung zu MySQL herstellt

Für diejenigen, die MySQL installiert haben, überprüfen Sie das MySQL-Installationsverzeichnis. Wenn dort keine Include- und MySQL-Dateien vorhanden sind lib-Verzeichnisse im Installationsverzeichnis,

zeigt an, dass es nicht vollständig installiert ist und Sie die MySQL-Connector-Klassenbibliothek herunterladen müssen. Die offizielle Download-Adresse: http://dev.mysql.com/ downloads/connector/c/

Empfohlener Kurs: C Language Tutorial.

So verbinden Sie C mit MySQL

Einige Screenshots sind wie folgt: Wie auf der linken Seite des Bildes zu sehen ist, bietet die offizielle Website Linkbibliotheken für C, C++, Python, J und andere Sprachen , das je nach persönlichen Umständen heruntergeladen werden kann.

Beginnen wir mit der Konfiguration von vs2008, die ungefähr drei Schritte umfasst.

Da wir die MySQL-API verwenden möchten und die MySQL-Datenbank auf unserem Computer installiert sein muss, müssen wir den Header-Dateipfad des Projekts auf den Speicherort derselben Datei mysql.h in verweisen MySQL-Installationsverzeichnis. Verweisen Sie auf den Pfad der Verbindungsbibliothek, in dem sich libmysql.lib befindet.

Diese beiden Dateien befinden sich im Allgemeinen in den Verzeichnissen include und lib.

Erstellen Sie ein neues Projekt, klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie „Eigenschaften“ und das Dialogfeld „Eigenschaften“ wird angezeigt.

Erstens: Richten Sie das C/C++->General->Additional Include-Verzeichnis auf der x-Projekteigenschaftenseite auf den Speicherort von mysql.h: C:Program FilesMySQLMySQL Server 5.1include

Zweitens: Richten Sie das Linker->Allgemein->Zusätzliche Bibliotheksverzeichnis auf der Projekteigenschaftsseite auf den Pfad, in dem sich libmysql.lib befindet : C: ProgrammeMySQLMySQL Server 5.1lib.

Drittens: Fügen Sie libmysql.lib zu Linker->Input->Additional Dependencies hinzu.

Nach der Übergabe der obigen Konfiguration ist ein Fehler aufgetreten:

Unaufgelöstes externes Symbol _mysql_close@4, auf das in der Funktion _main verwiesen wird
Unaufgelöstes externes Symbol _mysql_free_result@4, auf das in der Funktion _main verwiesen wird
Unaufgelöstes externes Symbol _mysql_num_fields@4, auf das in der Funktion _main verwiesen wird
Unaufgelöstes externes Symbol _mysql_fetch_row@4, auf das in der Funktion _main verwiesen wurde
Unaufgelöstes externes Symbol _mysql_store_result @4, das Symbol wird in der Funktion _main
referenziert Nicht auflösbares externes Symbol _mysql_error@4, das Symbol wird in der Funktion _main
referenziert und kann nicht aufgelöst werden. Aufgelöstes externes Symbol _mysql_real_query@12, auf das in der Funktion _main
verwiesen wird. Nicht aufgelöst externes Symbol _mysql_select_db@8, auf das in Funktion _main
Unaufgelöstes externes Symbol _mysql_real_connect@32 verwiesen wird, auf das Symbol wird in Funktion _main
Unaufgelöstes externes Symbol _mysql_init@4 verwiesen , auf das Symbol wird verwiesen in

Mit Hilfe von Netizens habe ich den 64-Bit-MySQL-Connector, den ich ursprünglich heruntergeladen hatte, deinstalliert und erneut eine 32-Bit-Installation heruntergeladen. Infolgedessen verschwand der Fehler . Ich war verwirrt. Vielleicht ist meine MySQL-Datenbank 32-Bit.

Schließlich ist der Beispielcode für die C-Verbindung zu MySQL beigefügt:

// test9.24.cpp : 定义控制台应用程序的入口点。
//
//#include <stdio.h> 
//#include <stdlib.h> 
//#include <mysql.h>  //包含MySQL所需要的头文件 
//#include <WinSock2.h> //Socket,连接MySQL也需要用的 
 
#include <windows.h>
#include "stdio.h"
#include "winsock.h" 
#include "mysql.h" 
 
MYSQL mysql, *sock;   //声明MySQL的句柄 
 
int main(void) 
{  
    const char * host = "127.0.0.1";  //因为是作为本机测试,所以填写的是本地IP 
    const char * user = "root";       //这里改为你的用户名,即连接MySQL的用户名 
    const char * passwd = "123"; //这里改为你的用户密码 
    const char * db = "yiersan";      //这里改为你要连接的数据库的名字 
    unsigned int port = 3306;           //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。 
    const char * unix_socket = NULL;    //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL 
    unsigned long client_flag = 0;      //这个参数一般为0 
    int t;
    const char * i_query = "select * from yes_msg"; //查询语句 
 
    MYSQL_RES * result;                          //保存结果集的 www.2cto.com  
    MYSQL_ROW row;                               //代表的是结果集中的一行 
 
    mysql_init(&mysql);                          //连接之前必须使用这个函数来初始化 
    if ( (sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag) ) == NULL ) //连接MySQL 
    { 
        printf("连接失败,原因是: \n"); 
        fprintf(stderr, " %s\n", mysql_error(&mysql)); 
        exit(1); 
    } 
    else 
    { 
        fprintf(stderr, "连接MySQL成功!!\n"); 
    } 
 
    if ( mysql_query(&mysql, i_query) != 0 )       //如果连接成功,则开始查询 
    { 
        fprintf(stderr, "查询失败!\n"); 
        exit(1); 
    } 
    else 
    { 
        if ( (result = mysql_store_result(&mysql)) == NULL ) //保存查询的结果 
        { 
            fprintf(stderr, "保存结果集失败!\n"); 
            exit(1); 
        } 
        else 
        { 
            while ( (row = mysql_fetch_row(result)) != NULL ) //读取结果集中的数据,返回的是下一行。因为保存结果集时,当前的游标在第一行【之前】 
            { 
                printf("name is %s\t", row[0]);               //打印当前行的第一列的数据 
                printf("age is %s\t\n", row[1]);              //打印当前行的第二列的数据 
            } 
        } 
 
    } 
    mysql_free_result(result);                                //释放结果集 
    mysql_close(sock);
	scanf("%d",&t);//关闭连接 
    system("pause"); 
    exit(EXIT_SUCCESS); 
}

Das obige ist der detaillierte Inhalt vonSo verbinden Sie C mit MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Vorheriger Artikel:Was ist der Code in C-Sprache?Nächster Artikel:Was ist der Code in C-Sprache?