는 C를 사용하여 CentOS7는 / C ++는 MariaDB / MySQL을 연결

머리말

데이터베이스에 연결 더 자바 사용 일반적이지만, C / C ++는 리눅스 운영 데이터베이스가 더 중요하다에, 많은 시간을 얻을 인터넷을 주로 자신의 방식을 통해 몇 가지 문제가 작성한 튜토리얼을 많이 확인하는 데 사용, 그리고 마지막으로 성공 할 수있다 MariaDB의 접속은, 그것이 기준으로 기록한다.
: 알리 클라우드 개발 환경, 냠 MariaDB를 사용하여 설치, 설치 튜토리얼 내가 다른 문서를 참조 CentOS7 64 웨이입니다 CentOS7 MariaDB 설치 및 구성

설치 도구를 찾습니다

리눅스 시스템의 일부 버전의 파일 경로를 찾을 신속하게 찾을 수 사용은 다음과 같은 오류를보고합니다 :

-bash: locate: command not found

그 이유는 mlocate이 패키지를 설치하지 않은, mlocate를 설치

yum  -y install mlocate

설치 후 아직도 도움, 새로운 버그를보고 않습니다 발견 내용의 위치를 ​​찾아보십시오

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

그 이유는 라이브러리를 업데이트, 라이브러리를 설치 한 후 업데이트되지 않습니다

updatedb

설치가 완료되면, 당신은 신속하게 찾아 사용하는 파일 경로를 찾을 수 있습니다

C ++ 연결 MariaDB

데이터베이스 프로그램에 대한 간단한 연결 봐

#include <stdlib.h>
#include <stdio.h>
#include "mysql/mysql.h"

int main( int argc, char *argv[] )
{
    MYSQL *conn_ptr;
    conn_ptr = mysql_init( NULL );  /* 连接初始化 */
    if ( !conn_ptr )
    {
        fprintf( stderr, "mysql_init failed\n" );
        return(EXIT_FAILURE);
    }

    conn_ptr = mysql_real_connect( conn_ptr, "x.x.x.x", "root", "passwd", "dbname", 0, NULL, 0 );   /* 建立实际连接 */
    /* 参数分别为:初始化的连接句柄指针,主机名(或者IP),用户名,密码,数据库名,0,NULL,0)后面三个参数在默认安装mysql>的情况下不用改 */
    if ( conn_ptr ){
        printf( "Connection success\n" );
    }
    else{
        printf( "Connection failed\n" );
    }

    mysql_close( conn_ptr ); /* 关闭连接 */

    return(EXIT_SUCCESS);
}

MySQL로 연결하려면, 먼저 헤더 파일을 추가해야합니다 #include <mysql/mysql.h>
다음 메이크 파일에 추가 -I/usr/include/mysql하고 -L/usr/lib64/mysql-lmysqlclient
해결 다른 오류가 발생하는 경우, 마지막 질문은 아래를 참조하십시오
같은 :

CC=g++  #编译器
CFLAGS=-g   #可以使用gdb调试
BIN=MicroChatServer #生成的可执行目标文件名
OBJS=sysutil.o  #.c/.cpp文件对应的.o目标文件
LIBS=-I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient -ljsoncpp -lpthread  #链接库

$(BIN):$(OBJS)
    $(CC) $(CFLAGS) $^ -o $@ $(LIBS)
%.o:%.cpp
    $(CC) $(CFLAGS) -c $< -o $@

.PHONY:clean    #清理所有目标文件和可执行文件
clean:
    rm -f *.o $(BIN)

그런 다음 확인 성공적으로 실행할 수 있습니다

문제 해결

질문 1 :
connect1.c : 4 : 19 : 오류 : mysql.h : 그런 파일이나 디렉토리
프롬프트가 MySQL을 (STABLE) 패키지를 더 mysql.h 파일이 없기 때문에이 오류가 발생, mysql.h 발견되지 않으며, 이 패키지를 설치해야합니다 :

sudo yum install mysql-devel -y 

그리고 그것을 찾을 수 있습니다 :

# locate mysql.h
/usr/include/mysql/mysql.h  

당신이 헤더 파일을 찾을 수 있도록 (-I 헤더 파일의 지정된 위치를 검색에 있었다 의미를, 사람의 GCC 참조).
질문 2 :
다시 구축하는 시도는 오류가 발생했습니다 :

# gcc connect1.c -o connect1 -I/usr/include/mysql -lmysqlclient   
/usr/bin/ld: cannot find -lmysqlclient  
collect2: ld 返回 1

DLL의 문제는, mysqlclient 링크 라이브러리를 찾을 수없는, 남자 GCC는 그래서는 mysqlclient 라이브러리의 위치를 ​​찾을 수 있도록, 뒤쪽에 -L로 검색 위치를 지정 발견

# locate *mysqlclient*
/usr/lib64/mysql/libmysqlclient.so
/usr/lib64/mysql/libmysqlclient.so.18
/usr/lib64/mysql/libmysqlclient.so.18.0.0
/usr/lib64/mysql/libmysqlclient_r.so

여기에 일부 시스템에서, 설명하는 /usr/lib/mysql/아래,하지만 난 CentOS7 64 비트에서 사용하고 /usr/lib64/mysql/블로그 게시물의 많은 명확하게 언급하지 않았기 때문에, 당신은 mlocate 라이브러리의 위치를 확인 설치하려는 이유는 아래로,하지만, 직접 그는에 있다고 /usr/lib/mysql/다음, 시스템의 일부에서 발생하는 것이 성공적으로 링크 오류 없습니다

위치를 찾은 후, 당신은 컴파일 할 수 있습니다 :

gcc connect1.c -o connect1  -I/usr/include/mysql -L/usr/lib64/mysql -lmysqlclient

그는 실행할 수 있도록, 성공적으로 컴파일하고 그 전에, 반드시 mysqld가 이미 실행되고 있는지 확인 :

sudo /etc/rc.d/init.d/mysqld restart  

그리고 그 결과 실행 파일을 실행 :

./connect1  
Connection success  

우리는 성공적으로 연결하는 인쇄 정보의 좋은 디자인을 인쇄 할 수 있습니다. 이 성공적 C는 / C ++ 언어는 MySQL 데이터베이스에 연결

추천

출처www.cnblogs.com/WindSun/p/12142653.html