목차
1.mysql API의 헤더 파일이 포함되어야 합니다
2. mysql에 연결하는 구체적인 단계는 다음과 같이 나눌 수 있습니다. 네 가지 주요 단계:
이 함수는 호스트에서 실행 중인 데이터베이스 엔진에 연결하는 데 사용됩니다. 연결에 성공하면 데이터베이스를 작동할 수 있는 핸들을 획득하고, 그렇지 않으면 NULL 포인터를 반환합니다.
이 함수는 쿼리 명령을 데이터베이스에 보내고 데이터베이스가 실행하도록 하는 데 사용됩니다. 0을 반환하면 쿼리가 성공했음을 나타내고 그렇지 않으면 실패합니다.
이 함수는 쿼리가 성공하면 결과 세트를 반환하고, 실패하면 NULL을 반환합니다.
이 함수의 입력 매개 변수는 단계 (3)에서 반환된 결과 집합입니다. 호출될 때마다 결과 집합의 다음 데이터 행이 반환되고 포인터는 한 행씩 뒤로 이동합니다. 다음 데이터 행이 없으면 NULL이 반환됩니다.
여기의 환경은 Linux 시스템입니다. 사용된 로컬 데이터베이스의 이름은 CrashCourse이고 쿼리 테이블의 이름은 products입니다. 다음 프로그래밍 예제에서는 제품 테이블에서 가격이 30보다 큰 모든 항목을 쿼리하는 방법을 보여줍니다. 제품 테이블의 전체 내용은 다음과 같습니다.
데이터 베이스 MySQL 튜토리얼 mysql 데이터베이스에 연결하고 C++에서 데이터를 읽는 방법

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

Jun 03, 2023 am 09:05 AM
mysql c++

    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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

    핫 AI 도구

    Undresser.AI Undress

    Undresser.AI Undress

    사실적인 누드 사진을 만들기 위한 AI 기반 앱

    AI Clothes Remover

    AI Clothes Remover

    사진에서 옷을 제거하는 온라인 AI 도구입니다.

    Undress AI Tool

    Undress AI Tool

    무료로 이미지를 벗다

    Clothoff.io

    Clothoff.io

    AI 옷 제거제

    AI Hentai Generator

    AI Hentai Generator

    AI Hentai를 무료로 생성하십시오.

    뜨거운 도구

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 Dec 09, 2024 am 11:42 AM

    MySQL 8.4(2024년 최신 LTS 릴리스)에 도입된 주요 변경 사항 중 하나는 &quot;MySQL 기본 비밀번호&quot; 플러그인이 더 이상 기본적으로 활성화되지 않는다는 것입니다. 또한 MySQL 9.0에서는 이 플러그인을 완전히 제거합니다. 이 변경 사항은 PHP 및 기타 앱에 영향을 미칩니다.

    C++에서 전략 디자인 패턴을 구현하는 방법은 무엇입니까? C++에서 전략 디자인 패턴을 구현하는 방법은 무엇입니까? Jun 06, 2024 pm 04:16 PM

    C++에서 전략 패턴을 구현하는 단계는 다음과 같습니다. 전략 인터페이스를 정의하고 실행해야 하는 메서드를 선언합니다. 특정 전략 클래스를 생성하고 각각 인터페이스를 구현하며 다양한 알고리즘을 제공합니다. 컨텍스트 클래스를 사용하여 구체적인 전략 클래스에 대한 참조를 보유하고 이를 통해 작업을 수행합니다.

    C++에서 중첩 예외 처리를 구현하는 방법은 무엇입니까? C++에서 중첩 예외 처리를 구현하는 방법은 무엇입니까? Jun 05, 2024 pm 09:15 PM

    중첩된 예외 처리는 중첩된 try-catch 블록을 통해 C++에서 구현되므로 예외 처리기 내에서 새 예외가 발생할 수 있습니다. 중첩된 try-catch 단계는 다음과 같습니다. 1. 외부 try-catch 블록은 내부 예외 처리기에서 발생한 예외를 포함하여 모든 예외를 처리합니다. 2. 내부 try-catch 블록은 특정 유형의 예외를 처리하며 범위를 벗어난 예외가 발생하면 외부 예외 처리기에 제어가 제공됩니다.

    C++ 템플릿 상속을 사용하는 방법은 무엇입니까? C++ 템플릿 상속을 사용하는 방법은 무엇입니까? Jun 06, 2024 am 10:33 AM

    C++ 템플릿 상속을 사용하면 템플릿 파생 클래스가 기본 클래스 템플릿의 코드와 기능을 재사용할 수 있습니다. 이는 동일한 핵심 논리를 사용하지만 특정 동작이 다른 클래스를 만드는 데 적합합니다. 템플릿 상속 구문은 templateclassDerived:publicBase{}입니다. 예: templateclassBase{};templateclassDerived:publicBase{};. 실제 사례: 파생 클래스 Derived를 생성하고, 기본 클래스 Base의 계산 기능을 상속하고, 현재 개수를 인쇄하는 printCount 메서드를 추가했습니다.

    크로스 스레드 C++ 예외를 처리하는 방법은 무엇입니까? 크로스 스레드 C++ 예외를 처리하는 방법은 무엇입니까? Jun 06, 2024 am 10:44 AM

    다중 스레드 C++에서 예외 처리는 std::promise 및 std::future 메커니즘을 통해 구현됩니다. Promise 개체를 사용하여 예외를 발생시키는 스레드에 예외를 기록합니다. 예외를 수신하는 스레드에서 예외를 확인하려면 future 객체를 사용하세요. 실제 사례에서는 Promise와 Future를 사용하여 다양한 스레드에서 예외를 포착하고 처리하는 방법을 보여줍니다.

    Redis 내보내기 서비스를 사용하여 Redis Droplet 모니터링 Redis 내보내기 서비스를 사용하여 Redis Droplet 모니터링 Jan 06, 2025 am 10:19 AM

    Redis 데이터베이스를 효과적으로 모니터링하는 것은 최적의 성능을 유지하고 잠재적인 병목 현상을 식별하며 전반적인 시스템 안정성을 보장하는 데 필수적입니다. Redis 내보내기 서비스는 다음을 사용하여 Redis 데이터베이스를 모니터링하도록 설계된 강력한 유틸리티입니다.

    정량적 통화 거래 소프트웨어 정량적 통화 거래 소프트웨어 Mar 19, 2025 pm 04:06 PM

    이 기사는 정량적 거래자가 올바른 플랫폼을 선택할 수 있도록 돕기 위해 세 가지 주요 거래소 인 Binance, Okx 및 Gate.io의 정량적 거래 기능을 탐구합니다. 이 기사는 먼저 정량적 거래의 개념, 장점 및 과제를 소개하고 API 지원, 데이터 소스, 백 테스트 도구 및 위험 제어 기능과 같은 우수한 정량적 거래 소프트웨어가 가져야하는 기능을 설명합니다. 그 후, 3 개의 거래소의 정량적 거래 기능을 비교하고 세부적으로 분석하여 각각 장점과 단점을 지적하고, 마침내 다른 수준의 경험을 가진 정량적 거래자에게 플랫폼 선택 제안을 제공하고, 위험 평가 및 전략적 백 테스트의 중요성을 강조했습니다. 당신이 초보자이든 숙련 된 정량적 거래자이든,이 기사는 귀중한 참조를 제공합니다.

    C++ 메모리 관리는 메모리 사용을 어떻게 최적화합니까? C++ 메모리 관리는 메모리 사용을 어떻게 최적화합니까? Jun 05, 2024 pm 10:41 PM

    C++ 메모리 관리를 위한 최적화 기술에는 스마트 포인터(RAII) 사용, 빈번한 할당 감소, 불필요한 복사본 방지, 저수준 API 사용(주의) 및 메모리 사용량 분석이 포함됩니다. 스마트 포인터 사용 및 이미지 처리 애플리케이션의 캐싱과 같은 기술을 통해 메모리 사용 및 성능을 크게 최적화할 수 있습니다.

    See all articles