Maison  >  Article  >  développement back-end  >  Comment connecter C avec MySQL

Comment connecter C avec MySQL

(*-*)浩
(*-*)浩original
2019-05-11 13:41:134675parcourir

Cet article utilise l'environnement : win7 x64, vs2008, mysql comme exemple pour expliquer comment C se connecte à MySQL

Pour ceux qui ont installé mysql, vérifiez le répertoire d'installation de mysql s'il n'y a pas d'include et. lib dans le répertoire d'installation,

indique qu'il n'est pas complètement installé et que vous devez télécharger la bibliothèque de classes mysql-connector. L'adresse de téléchargement officielle : http://dev.mysql.com/. downloads/connector/c/

Cours recommandé : Tutoriel du langage C.

Comment connecter C avec MySQL

Certaines captures d'écran sont les suivantes. Comme on peut le voir sur le côté gauche de l'image, le site officiel fournit des bibliothèques de liens pour c, c++, Python, J et d'autres langages. , qui peut être téléchargé en fonction des circonstances personnelles.

Commençons par configurer vs2008, qui prend environ trois étapes.

Puisque nous voulons utiliser l'API Mysql et que la base de données Mysql doit être installée sur notre machine, nous devons pointer le chemin du fichier d'en-tête du projet vers l'emplacement du même fichier mysql.h dans le Répertoire d'installation de Mysql. Pointez le chemin de la bibliothèque de connexion vers le chemin où se trouve libmysql.lib

Ces deux fichiers se trouvent généralement dans les répertoires include et lib.

Créez un nouveau projet, cliquez avec le bouton droit sur le projet, sélectionnez Propriétés et la boîte de dialogue des propriétés apparaîtra.

Premièrement : Pointez le répertoire d'inclusion supplémentaire C/C++->Général-> sur la page de propriétés du projet x vers l'emplacement de mysql.h : C:Program FilesMySQLMySQL Server 5.1include

Deuxième : Pointez le répertoire de la bibliothèque linker->Général->Additional library sur la page de propriétés du projet vers le chemin où se trouve libmysql.lib : C : Program FilesMySQLMySQL Server 5.1lib.

Troisième : Ajoutez libmysql.lib à Linker->Input->Dépendances supplémentaires.

Après avoir passé la configuration ci-dessus, une erreur s'est produite :

Symbole externe non résolu _mysql_close@4, qui est référencé dans la fonction _main
Symbole externe non résolu _mysql_free_result@4, qui est référencé dans la fonction _main
Symbole externe non résolu _mysql_num_fields@4, qui est référencé dans la fonction _main Référencé dans la fonction _main
Symbole externe non résolu _mysql_fetch_row@4, qui a été référencé dans la fonction _main
Symbole externe non résolu _mysql_store_result @4, le symbole est référencé dans la fonction _main
Symbole externe insoluble _mysql_error@4, le symbole est référencé dans la fonction _main
ne peut pas être résolu Symbole externe résolu _mysql_real_query@12, qui est référencé dans la fonction _main
Non résolu symbole externe _mysql_select_db@8, qui est référencé dans la fonction _main
Symbole externe non résolu _mysql_real_connect@32, le symbole est référencé dans la fonction _main
Symbole externe non résolu _mysql_init@4 , le symbole est référencé dans

Avec l'aide des internautes, j'ai désinstallé le connecteur MySQL 64 bits que j'avais initialement téléchargé et téléchargé à nouveau une installation 32 bits. En conséquence, l'erreur a disparu. . J'étais perplexe. Peut-être que ma base de données MySQL est Bar 32 bits.

Enfin, l'exemple de code pour la connexion c à mysql est joint :

// 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); 
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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