>데이터 베이스 >MySQL 튜토리얼 >MySQL 시작하기: C 언어를 사용하여 MySQL 작동

MySQL 시작하기: C 언어를 사용하여 MySQL 작동

黄舟
黄舟원래의
2017-01-19 15:49:282450검색

기본 개념

C API는 mysqlclient 라이브러리 파일에 포함되어 있으며, 이는 MySQL 소스 코드와 함께 배포되며 데이터베이스에 연결하고 데이터베이스 쿼리를 수행하는 데 사용됩니다.

#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;
}

프로그래밍 단계

1 mysql_library_init()를 호출하여 MYSQL 라이브러리를 초기화합니다.
2 mysql_init()를 호출하여 연결 핸들러를 초기화하고 mysql_real_connect()를 호출하여 서버에 연결합니다.
3 SQL 문 실행 및 결과 처리
4 mysql_close()를 호출하여 MYSQL 서버와의 연결을 끊습니다.
5 mysql_library_end()를 호출하여 MYSQL 라이브러리 사용을 종료합니다.

주의 사항 질문 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): __gxx_personality_v0'에 대한 정의되지 않은 참조
/usr/lib64/mysql//libmysqlclient. a (password.c.o): functioncramble_323':

C++ 동적 라이브러리를 사용해야 하며, 컴파일 옵션에 -lstdc++ 옵션을 추가하세요

질문 2
/usr/lib64 /mysql/ /libmysqlclient.a(dso_dlfcn.o): dlfcn_globallookup' 함수에서:
dso_dlfcn.c:(.text+0x31): 정의되지 않은 참조 todlopen'
dso_dlfcn.c:(.text+0x44): dlsym'에 대한 정의되지 않은 참조
dso_dlfcn.c:(.text+0x4f): dlclose에 대한 정의되지 않은 참조
/usr/lib64/mysql//libmysqlclient.a(dso_dlfcn.o): dlfcn_pathbyaddr' 함수에서:
dso_dlfcn.c:(.text+0xa0): dlerror'에 대한 정의되지 않은 참조
dso_dlfcn.c:(.text+0x101): dlerror에 대한 정의되지 않은 참조
/usr/lib64/mysql//libmysqlclient.a( dso_dlfcn.o ): 함수dlfcn_bind_func'에서:
dso_dlfcn.c:(.text+0x464): `dlsym'에 대한 정의되지 않은 참조

콜백 함수의 정방향 및 역방향 호출의 경우 다음을 사용해야 합니다. dl 함수 라이브러리, 컴파일 옵션에 -ldl 옵션 추가

질문 3

thread_mutex_trylock'
/usr/lib64/mysql//libmysqlclient.a(my_thr_init.c.o): 함수 내 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: 정의되지 않은 참조 topthread_key_delete'
/pb2/build/ sb_0-12734909-1406113305.48/rpm/BUILD/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:217: pthread_mutexattr_destroy에 대한 정의되지 않은 참조
/pb2/build/sb_0-127 34909 -1406113305.48/rpm/BUILD/mysqlcom-pro-5.6.20/mysqlcom-pro-5.6.20/mysys/my_thr_init.c:220: 정의되지 않은 참조 topthread_mutexattr_destroy'

MySQL의 동적 라이브러리는 멀티스레딩을 사용합니다. 컴파일 옵션에 -lpthread 옵션을 추가하세요

4. 질문 4

[mysql01@localhost dm01]$ gcc -o dm11_hello dm11_hello.c -I/usr/include/ -L/usr / lib64/mysql/ -lmysqlclient -ldl -lstdc++ -lpthread
/usr/lib64/mysql//libmysqlclient.a(my_getsystime.c.o): 함수 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: clock_gettime'에 대한 정의되지 않은 참조
collect2: ld는 1을 반환합니다
[mysql01@ localhost dm01] $

런타임 동적 라이브러리 및 수학 라이브러리 누락, -lm 및 -lrt 옵션 추가

gcc 컴파일 명령 완료:

gcc -o hello hello.c - I /usr/include/mysql/ -L/usr/lib/i386-linux-gnu/ -lmysqlclient -lm -ldl -lstdc++ -lpthread -lrt

일반 Makefile 쓰기

.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)

위 내용은 MySQL 입문: MySQL을 구동하기 위한 C언어 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


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