> 백엔드 개발 > C++ > C++에서 MySQL 데이터베이스 사용 및 응용 기술

C++에서 MySQL 데이터베이스 사용 및 응용 기술

王林
풀어 주다: 2023-08-22 17:18:30
원래의
1815명이 탐색했습니다.

C++에서 MySQL 데이터베이스 사용 및 응용 기술

MySQL은 다양한 유형의 데이터를 저장하고 관리하는 데 사용할 수 있는 인기 있는 오픈 소스 데이터베이스 관리 시스템입니다. 이 기사에서는 C++에서 MySQL 데이터베이스를 사용하는 방법과 일부 응용 기술을 소개합니다.

MySQL C++ 커넥터 설치

먼저 MySQL C++ 커넥터를 설치해야 합니다. MySQL 공식 홈페이지(http://dev.mysql.com/downloads/connector/cpp/)에서 운영 체제 버전에 해당하는 MySQL C++ 커넥터를 다운로드할 수 있습니다. Windows에 설치한 후 Visual Studio 프로젝트의 추가 include 디렉터리와 추가 라이브러리 디렉터리에 설치 경로 아래의 include 및 lib 폴더를 추가합니다.

MySQL 데이터베이스에 연결

MySQL 데이터베이스에 연결하려면 다음 매개변수를 알아야 합니다.

  • 호스트 이름: MySQL 서버가 위치한 호스트 이름입니다.
  • 사용자 이름 및 비밀번호: 데이터베이스에 연결할 때 사용되는 사용자 이름 및 비밀번호입니다.
  • 데이터베이스 이름: 연결할 데이터베이스의 이름입니다.

다음 코드를 사용하여 MySQL 데이터베이스에 연결하세요.

#include <iostream>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main() {
    sql::Driver* driver;
    sql::Connection* con;
    sql::Statement* stmt;
    sql::ResultSet* res;

    driver = get_driver_instance();
    con = driver->connect("tcp://localhost:3306", "username", "password");
    stmt = con->createStatement();
    stmt->execute("USE database_name");

    // 这里可以执行需要的操作

    delete res;
    delete stmt;
    delete con;
    return 0;
}
로그인 후 복사

여기서 "tcp://localhost:3306"은 로컬 MySQL 서버에 연결하기 위한 기본 포트를 나타내고 "username" 및 "password"는 사용자 이름입니다. 및 데이터베이스에 연결할 때 사용되는 비밀번호, "database_name"은 연결할 데이터베이스의 이름입니다.

기본 SQL 쿼리 실행

MySQL 데이터베이스에 연결한 후 SQL 쿼리를 사용하여 데이터를 읽고 쓸 수 있습니다. 다음은 몇 가지 기본 SQL 쿼리 예입니다.

Query

res = stmt->executeQuery("SELECT * FROM table_name");
while (res->next()) {
    cout << res->getString("column_name") << endl;
}
로그인 후 복사

Insert

stmt->execute("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");
로그인 후 복사

Update

stmt->execute("UPDATE table_name SET column1='new_value' WHERE column2='value_to_update'");
로그인 후 복사

Delete

stmt->execute("DELETE FROM table_name WHERE column='value_to_delete'");
로그인 후 복사

데이터를 삭제하거나 업데이트하기 전에 먼저 SELECT 문을 사용하여 쿼리하여 삭제하려는 데이터가 있는지 확인해야 합니다. 또는 업데이트가 존재합니다.

쿼리 결과 처리

executeQuery를 사용하여 SELECT 쿼리를 실행한 후 ResultSet 개체를 사용하여 결과 집합을 얻을 수 있습니다. ResultSet 클래스는 가져오려는 열의 데이터 유형에 따라 다양한 유형의 데이터를 가져오는 다양한 메서드를 제공합니다. 다음은 몇 가지 예입니다.

res = stmt->executeQuery("SELECT * FROM table_name");

//获取int类型数据
int c1 = res->getInt("column1");

//获取string类型数据
string c2 = res->getString("column2");

//获取double类型的数据
double c3 = res->getDouble("column3");
로그인 후 복사

while 루프를 사용하여 결과 집합의 모든 데이터를 읽을 수 있습니다.

while (res->next()) {
    int c1 = res->getInt("column1");
    string c2 = res->getString("column2");
    double c3 = res->getDouble("column3");
    //做一些任务
}
로그인 후 복사

MySQL 오류 처리

C++에서 MySQL을 사용할 때 오류는 일반적으로 다음을 통해 처리할 수 있습니다.

try {
    //需要执行的语句
} catch (sql::SQLException& e) {
    //发生错误时的处理
    cout << "MySQL Error: " << e.what() << endl;
}
로그인 후 복사

In a try block catch 블록에서 SQLException이 발생할 수 있는 문을 실행한 후 catch 블록에서 오류를 처리합니다. 오류 메시지는 catch 블록의 e.what()을 사용하여 얻을 수 있습니다.

트랜잭션 사용

MySQL 데이터베이스는 일련의 작업을 단일 논리 단위로 수행할 수 있는 트랜잭션을 지원합니다. 이러한 작업 중 하나라도 실패하면 모든 작업은 트랜잭션이 시작되기 전 상태로 롤백됩니다. 다음과 같은 경우 트랜잭션을 사용하는 방법:

sql::Savepoint* savepoint = con->setSavepoint();
try {
    stmt->execute("UPDATE table_name SET column1='new_value' WHERE column2='value_to_update'");
    stmt->execute("INSERT INTO table_name (column1, column2) VALUES ('value', 'value')");
    con->commit();
} catch (sql::SQLException& e) {
    con->rollback(savepoint);
}
로그인 후 복사

트랜잭션으로 작동해야 하는 명령문을 실행하기 전에 먼저 연결 개체(con)에 저장점(savepoint)을 설정합니다. 모든 명령문이 성공적으로 실행된 후 연결 개체의 commit() 메서드를 사용하여 트랜잭션을 커밋합니다. 실행에 실패한 명령문이 있으면 연결 개체의 rollback(savepoint) 메서드를 사용하여 모든 변경 사항을 롤백하고 실행 취소합니다.

결론

C++에서 MySQL 데이터베이스를 사용하면 데이터를 저장하고 검색할 수 있을 뿐만 아니라 트랜잭션 및 오류 처리를 사용하여 데이터 무결성과 정확성을 보장할 수도 있습니다. 이 문서에서는 MySQL 데이터베이스에 연결하고, 기본 SQL 쿼리를 실행하고, 쿼리 결과를 처리하고, MySQL 오류를 처리하고, 트랜잭션을 사용하는 방법을 설명합니다. 이 팁이 MySQL 데이터베이스를 사용하는 C++ 개발자에게 도움이 되기를 바랍니다.

위 내용은 C++에서 MySQL 데이터베이스 사용 및 응용 기술의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿