目次
1. ドライバーのインストール
(1) インストール
(2) ドライバーが正常にインストールされたかどうかを確認します。
2. MySQL データベースの使用
(1) 単一ステートメントの実行
(2) 複数文の実行
(3) バッチ処理操作
ホームページ データベース mysql チュートリアル QtでMySQLデータベースを操作する方法

QtでMySQLデータベースを操作する方法

Jun 03, 2023 am 08:52 AM
mysql qt

    1. ドライバーのインストール

    (1) インストール

    Qt で MySQL データベースを操作するには、まず mysql をインストールする必要があります。 MySQL の libmusql.dll ファイルを Qt インストール パスの bin フォルダーにコピーするだけです。

    QtでMySQLデータベースを操作する方法

    libmysql.dll ファイルをこのフォルダーに直接貼り付けます。

    QtでMySQLデータベースを操作する方法

    (2) ドライバーが正常にインストールされたかどうかを確認します。

    コピーが成功したら、ドライバーが正常にインストールされたかどうかをテストし、新しいファイルを作成します。 Qt デザイナー インターフェイス クラスを選択すると、後続のすべての操作をデフォルトのままにすることができます。

    QtでMySQLデータベースを操作する方法

    新しく生成された .cpp ファイルに次のライブラリを導入します

    1

    2

    3

    4

    5

    6

    7

    #include <QSqlDatabase>

    #include <QDebug>

    #include <QMessageBox> 

    #include <QSqlError>   

    #include <QString>

    #include <QSqlQuery>

    #include <QVariantList>

    ログイン後にコピー

    コンストラクターに次のコードを挿入し、警告ウィンドウが表示されない場合は [実行] をクリックします。ポップアップ インストールが成功したことを意味します。それ以外の場合は失敗します。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    //添加一个数据库

        QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");    //括号内要写出数据库的类型

        //设置数据库

        db.setHostName("127.0.0.1"); //设置数据库的主机ip

        //设置数据库的用户名

        db.setUserName("root");

        //设置数据库的密码

        db.setPassword("123456");    //这个就是安装MySQL时设置的密码

        //设置数据库的名字

        db.setDatabaseName("aaa2");

        //打开数据库(已经安装过mysql驱动了)

        if(db.open()==false){

            QMessageBox::warning(this,"waring",db.lastError().text());

        }

    ログイン後にコピー

    2. MySQL データベースの使用

    (1) 単一ステートメントの実行

    まず QString オブジェクトの SQL を作成し、SQL 内に実行するステートメントを記述してから、 QSqlQuery クラス オブジェクト クエリは、その exec() 関数を呼び出して SQL のコードを実行します。

    1

    2

    3

    QString sql = "insert into student (id,name,age,math) values (1,&#39;kaw&#39;,20,97)"//书写想要执行的语句

    QSqlQuery query;    //创建一个QSqlQuery对象

    query.exec(sql);    //执行mysql语句

    ログイン後にコピー

    (2) 複数文の実行

    SQLでは各文をセミコロンで区切ることで複数の文を同時に実行することができます。テーブルの追加、削除、更新を同時に行うには、次の操作を実行します。

    1

    2

    3

    QString sql = "insert into student (id,name,age,math) values (13,&#39;kaw&#39;,20,97);delete from student where id=2;update student set name=&#39;sdd&#39;,math=100 where id=10;";

    QSqlQuery query;    //创建一个QSqlQuery对象

    query.exec(sql);    //执行mysql语句

    ログイン後にコピー

    (3) バッチ処理操作

    方法 1: addBindValue()

    実行するステートメントを query.prepare() に入力します。 -entered 値は「?」に置き換えられます。「?」はワイルドカード文字です。後で設定したい値を追加する場合は、idList、nameList、ageList、mathList を使用できます。エラーを避けるために、id、name、age、math の順に addBindValue() を使用して値をバインドしてください。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    QSqlQuery query;

    query.prepare("insert into student (id,name,age,math) values (?,?,?,?)");   //书写语句模型

    //添加绑定数据

    QVariantList idList;    //创建一个id列表

    idList << 15<<16<<17;

    query.addBindValue(idList); //完成第一个?的绑定

    QVariantList nameList;

    nameList << "ddd"<<"eee"<<"jjj";

    query.addBindValue(nameList);   //完成第二个?的绑定

    QVariantList ageList;

    ageList << 25<<24<<23;

    query.addBindValue(ageList);    //完成第三个?的绑定

    QVariantList mathList;

    mathList << 90<<89<<90;

    query.addBindValue(mathList);   //完成第四个?的绑定

    //执行批处理

    query.execBatch();

    ログイン後にコピー

    方法 2:bindValue()

    カスタム名を直接使用してバインドを完了します。このとき、バインド順序は自分で決定できます。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    QSqlQuery query;

    query.prepare("insert into student (id,name,age,math) values (:id,:name,:age,:math)");  //:id之类的名字时自定义的 自己方便就好

    //添加绑定数据

    QVariantList idList;    //创建一个id列表

    idList << 18<<19<<20;

    query.bindValue(":id",idList); //完成:id的绑定

    QVariantList nameList;

    nameList << "ddd"<<"eee"<<"jjj";

    query.bindValue(":name",nameList);   //完成:name的绑定

    QVariantList ageList;

    ageList << 25<<24<<23;

    query.bindValue(":age",ageList);    //完成:age的绑定

    QVariantList mathList;

    mathList << 90<<89<<90;

    query.bindValue(":math",mathList);   //完成:math的绑定

    //执行批处理

    query.execBatch();

    ログイン後にコピー

    (4) クエリ

    クエリ対象のテーブルは次のとおりです:

    QtでMySQLデータベースを操作する方法

    value の後の値はインデックスまたは列になります。名前。取り出したら、対応するデータ型に変換する必要があります。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    //查询操作

    QSqlQuery query;

    query.exec("select * from student");

    while(query.next()){

        qDebug()<<query.value(0).toInt()

             <<query.value("name").toString().toUtf8().data()

            <<query.value(2).toInt()

           <<query.value(3).toInt();  

    }

    ログイン後にコピー

    クエリ結果:

    QtでMySQLデータベースを操作する方法

    以上がQtでMySQLデータベースを操作する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットな記事タグ

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    PHPのビッグデータ構造処理スキル PHPのビッグデータ構造処理スキル May 08, 2024 am 10:24 AM

    PHPのビッグデータ構造処理スキル

    PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか? Jun 03, 2024 pm 08:11 PM

    PHP で MySQL クエリのパフォーマンスを最適化するにはどうすればよいですか?

    PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか? Jun 03, 2024 pm 12:19 PM

    PHP で MySQL のバックアップと復元を使用するにはどうすればよいですか?

    PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか? Jun 02, 2024 pm 02:26 PM

    PHP を使用して MySQL テーブルにデータを挿入するにはどうすればよいですか?

    データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? データベースにおける Java 列挙型のアプリケーション シナリオは何ですか? May 05, 2024 am 09:06 AM

    データベースにおける Java 列挙型のアプリケーション シナリオは何ですか?

    MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法 Dec 09, 2024 am 11:42 AM

    MySQL 8.4 で mysql_native_password がロードされていないエラーを修正する方法

    PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか? Jun 02, 2024 pm 02:13 PM

    PHP で MySQL ストアド プロシージャを使用するにはどうすればよいですか?

    PHP 配列ページングのパフォーマンス最適化戦略 PHP 配列ページングのパフォーマンス最適化戦略 May 02, 2024 am 09:27 AM

    PHP 配列ページングのパフォーマンス最適化戦略

    See all articles