C++ での MySQL データベースの使用とそのアプリケーション スキル

王林
リリース: 2023-08-22 17:18:30
オリジナル
1747 人が閲覧しました

C++ での MySQL データベースの使用とそのアプリケーション スキル

MySQL は、さまざまな種類のデータの保存と管理に使用できる、人気のあるオープン ソース データベース管理システムです。この記事では、C で MySQL データベースを使用する方法とアプリケーションのヒントを紹介します。

MySQL C コネクタのインストール

まず、MySQL C コネクタをインストールする必要があります。オペレーティング システムのバージョンに対応する MySQL C コネクタは、MySQL 公式 Web サイト (http://dev.mysql.com/downloads/connector/cpp/) からダウンロードできます。 Windows にインストールした後、インストール パスの下の include フォルダーと lib フォルダーを、Visual Studio プロジェクトの追加の include ディレクトリと追加のライブラリ ディレクトリに追加します。

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'");
ログイン後にコピー

Before にあることに注意してください。データを削除または更新する場合は、まず 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 エラーの処理

MySQL を C で使用する場合、通常、次の方法でエラーを処理できます。

try {
    //需要执行的语句
} catch (sql::SQLException& e) {
    //发生错误时的处理
    cout << "MySQL Error: " << e.what() << endl;
}
ログイン後にコピー

try ブロックで 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 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート