>  기사  >  데이터 베이스  >  mysql 데이터베이스에 연결하고 C++에서 데이터를 읽는 방법

mysql 데이터베이스에 연결하고 C++에서 데이터를 읽는 방법

WBOY
WBOY앞으로
2023-06-03 09:05:364097검색

    1.mysql API의 헤더 파일이 포함되어야 합니다

    로컬 mysql 데이터베이스에 연결해야 하는 경우 mysql 데이터베이스가 로컬에 설치되어 있어야 한다는 전제가 있습니다. 여기에는 데이터베이스 연결, 쿼리 문 실행 및 기타 작업과 같은 일부 mysql API가 사용됩니다.

    #include <mysql/mysql.h>

    2. mysql에 연결하는 구체적인 단계는 다음과 같이 나눌 수 있습니다. 네 가지 주요 단계:

    1. mysql 데이터베이스에 연결

    1. mysql 데이터베이스에 연결

    물론 mysql 데이터에 있는 데이터를 얻으려면 먼저 데이터베이스에 연결하고 해당 작업을 수행할 수 있는 핸들을 얻어야 합니다. 데이터 베이스.

    2. 쿼리문을 실행합니다. 즉, 필요한 데이터를 선택합니다.

    는 쿼리문을 실행하여 필요한 데이터를 쿼리하는 것입니다. 쿼리된 데이터는 결과 집합이라는 위치에 저장됩니다.

    3. 결과 집합에서 필요한 데이터 가져오기

    관련 인터페이스 기능을 사용하여 결과 집합의 각 행과 필드의 데이터를 가져옵니다.

    4. 결과 세트에서 각 행의 각 필드 정보를 추출합니다.

    5. 결과 세트의 mysql 핸들을 포함한 리소스를 해제합니다.

    다음은 사용해야 하는 몇 가지 주요 인터페이스 기능에 대한 자세한 설명입니다.

    2.1 mysql_real_connect

    이 함수는 호스트에서 실행 중인 데이터베이스 엔진에 연결하는 데 사용됩니다. 연결에 성공하면 데이터베이스를 작동할 수 있는 핸들을 획득하고, 그렇지 않으면 NULL 포인터를 반환합니다.

    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
    						)

    이 함수에는 많은 매개변수가 있으며, 각 매개변수의 의미는 다음과 같습니다.

    • mysql

      : 기존 MYSQL 구조의 주소입니다. mysql_real_connect()를 호출하기 전에 mysql_init()를 호출하여 MYSQL 구조를 초기화해야 합니다.

    • host

      : 호스트 이름 또는 IP 주소입니다. "host"가 NULL이거나 문자열 "localhost"인 경우 연결은 localhost에 대한 연결로 처리됩니다.

    • user

      : 사용자의 MySQL 로그인 ID입니다. "user"가 NULL이거나 빈 문자열 ""인 경우 해당 사용자는 현재 사용자로 간주됩니다.

    • passwd

      : 사용자의 비밀번호. "passwd"가 NULL이면 사용자의 사용자 테이블에 있는 항목(비어 있는 비밀번호 필드가 있음)만 일치하는지 확인됩니다.

    • db

      : 데이터베이스 이름입니다. db가 NULL이면 연결은 기본 데이터베이스를 이 값으로 설정합니다.

    • port

      : "port"가 0이 아닌 경우 해당 값은 TCP/IP 연결을 위한 포트 번호로 사용됩니다. "host" 매개변수는 연결 유형을 결정합니다.

    • unix_socket

      : unix_socket이 NULL이 아닌 경우 이 문자열은 사용해야 하는 소켓 또는 명명된 파이프를 설명합니다. "host" 매개변수는 연결 유형을 결정합니다.

    • client_flag

      : 값은 일반적으로 0

    • 2.2 mysql_query 또는 mysql_real_query

    이 함수는 쿼리 명령을 데이터베이스에 보내고 데이터베이스가 실행하도록 하는 데 사용됩니다. 0을 반환하면 쿼리가 성공했음을 나타내고 그렇지 않으면 실패합니다.

    int mysql_query(MYSQL *mysql, const char *stmt_str)

    or:

    int
    mysql_real_query(MYSQL *mysql,
                     const char *stmt_str,
                     unsigned long length)

      mysql: 을 통해 얻은 mysql 작업 핸들입니다.
    • stmt_str: 실행해야 할 쿼리문을 나타냅니다.
    • length: 쿼리 문의 길이입니다.
    • 위 두 함수의 차이점은 다음과 같습니다.

      mysql_query()는 바이너리 문을 실행하는 데 사용할 수 없습니다. 즉, 매개변수 stmt_str에 바이너리 데이터가 있을 수 없으며 문자로 구문 분석됩니다.
    • mysql_query는 쿼리 문의 길이를 계산해야 하기 때문에 약간 느립니다.
    • 2.3 결과 세트 가져오기 mysql_store_result

    이 함수는 쿼리가 성공하면 결과 세트를 반환하고, 실패하면 NULL을 반환합니다.

    MYSQL_RES *mysql_store_result(MYSQL *mysql)

    2.4 결과 집합 표시 데이터의 각 행

    이 함수의 입력 매개 변수는 단계 (3)에서 반환된 결과 집합입니다. 호출될 때마다 결과 집합의 다음 데이터 행이 반환되고 포인터는 한 행씩 뒤로 이동합니다. 다음 데이터 행이 없으면 NULL이 반환됩니다.

    mysql_num_fields(result)를 사용하여 결과 집합의 행 수를 계산할 수 있고, mysql_num_fields(result)를 사용하여 열 수를 계산할 수 있습니다. row가 특정 행의 정보라면 row[0], row[1]이 됩니다. . . 행의 각 필드 정보입니다.

    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

    3. 프로그래밍 예제

    여기의 환경은 Linux 시스템입니다. 사용된 로컬 데이터베이스의 이름은 CrashCourse이고 쿼리 테이블의 이름은 products입니다. 다음 프로그래밍 예제에서는 제품 테이블에서 가격이 30보다 큰 모든 항목을 쿼리하는 방법을 보여줍니다. 제품 테이블의 전체 내용은 다음과 같습니다.

    #include 
    #include <mysql/mysql.h>
    #include 
    using namespace std;
     
    MYSQL mysql;  //mysql连接
    MYSQL_RES* res; //结果集结构体   
    MYSQL_ROW row; //char** 二维数组,存放记录  
     
    int main()
    {	
    	// 步骤1: 初始化并连接数据库,获得操作数据库的句柄
    	mysql_init(&mysql);    //初始化
    	if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) {
    		cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql);
    		exit(1);
    	}
    	else {
    		printf("Database connection succeeded. Connected...\n\n");
    	}
    	// 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句)
    	mysql_query(&mysql, "set names gbk"); // 设置编码格式
    	mysql_query(&mysql, "SELECT * from products where prod_price > 30");
     
    	// 步骤3:获取结果集
    	res = mysql_store_result(&mysql);
    	// 步骤4:显示结果集中每行数据
        int cols = mysql_num_fields(res); // 计算结果集中,列的个数
    	while (row = mysql_fetch_row(res)) {
        
        	for (int i = 0; i < cols; ++i) {
          		cout << row[i] << "\t";
        	}
        	cout << endl;
    	}
     	// 步骤5:释放结果集合mysql句柄
    	mysql_free_result(res);
    	mysql_close(&mysql);
     return 0;
     
    }
    mysql 데이터베이스에 연결하고 C++에서 데이터를 읽는 방법쿼리 결과는 다음과 같습니다.

    위 내용은 mysql 데이터베이스에 연결하고 C++에서 데이터를 읽는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제