>  기사  >  백엔드 개발  >  c와 mysql을 연결하는 방법

c와 mysql을 연결하는 방법

(*-*)浩
(*-*)浩원래의
2019-05-11 13:41:134772검색

이 기사에서는 win7 x64, vs2008, mysql 환경을 예로 들어 C가 MySQL에 연결하는 방법을 설명합니다.

mysql을 설치한 경우 설치에 include 및 lib 디렉터리가 없는 경우 mysql 설치 디렉터리를 확인하세요.

설명이 부족합니다. 설치하려면 mysql-connector 클래스 라이브러리를 다운로드해야 합니다. 공식 다운로드 주소: http://dev.mysql.com/downloads/connector/c/

추천 과정 : C 언어 튜토리얼.

c와 mysql을 연결하는 방법

일부 스크린샷은 다음과 같습니다. 사진의 왼쪽에서 볼 수 있듯이 공식 홈페이지에서는 c, c++, Python, J 및 기타 언어에 대한 링크 라이브러리를 제공하며, 이는 개인 상황에 따라 다운로드할 수 있습니다.

대략 3단계가 필요한 vs2008 구성을 시작하겠습니다.

Mysql API를 사용하고 싶고 Mysql 데이터베이스가 우리 컴퓨터에 설치되어 있어야 하므로 프로젝트 헤더 파일 경로를 Mysql 설치 디렉터리에 있는 동일한 mysql.h 파일의 위치로 지정하고 libmysql에 대한 연결 라이브러리 경로 .lib가 위치한 경로,

이 두 파일은 일반적으로 include 및 lib 디렉터리에 있습니다.

새 프로젝트를 생성하고 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후 속성을 선택하면 속성 대화 상자가 나타납니다.

첫 번째:x 프로젝트 속성 페이지의 C/C++->일반->추가 포함 디렉터리를 mysql.h의 위치로 지정합니다. C:Program FilesMySQLMySQL Server 5.1include

두 번째: 프로젝트 속성 페이지의 Linker->General-> 추가 라이브러리 디렉터리를 libmysql.lib가 있는 경로로 지정합니다: C:Program FilesMySQLMySQL Server 5.1lib.

세 번째: Place the Linker-> ; Enter->추가 종속성에 libmysql.lib를 추가합니다.

위 구성을 전달한 후 오류가 발생했습니다.

함수 _main에서 참조되는 확인되지 않은 외부 기호 _mysql_close@4
함수 _main에서 참조되는 확인되지 않은 외부 기호 _mysql_free_result@4, 함수 _main에서 참조됨
_main 함수에서 참조되는 확인되지 않은 외부 기호 _mysql_num_fields@4
_main 함수에서 참조되는 확인되지 않은 외부 기호 _mysql_fetch_row@4
_main 함수에서 참조되는 확인되지 않은 외부 기호 _mysql_store_result@4
_main 함수에서 참조되는 해결되지 않은 외부 기호 _mysql_error@4
_main 함수에서 참조되는 해결 불가능한 외부 기호 _mysql_real_query@12
_main 함수에서 참조되는 해결되지 않은 외부 기호 _mysql_select_db@8
해결됨 외부 기호 _mysql_real_connect@32, 이 기호는 _main 함수에서 참조됩니다.
해결할 수 없는 외부 기호 _mysql_init@4, 이 기호는

에 있습니다. 네티즌의 도움으로 원래 다운로드하고 다운로드한 64비트 mysql-connector를 제거했습니다. 새로운 것 32비트 설치 후 오류가 사라졌습니다. 아마도 내 mysql 데이터베이스가 32비트일 수도 있습니다.

마지막으로 첨부된 것은 mysql에 대한 c 연결을 위한 샘플 코드입니다:

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

위 내용은 c와 mysql을 연결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.