QT が MYSQL データベースに接続するための詳細な手順

QT が MYSQL データベースに接続するための詳細な手順

最初のステップは、対応するデータベースモジュール(sql)をプロジェクトファイル( .pro )に追加し、いくつかのクラス(対応するヘッダーファイルも)を導入することです。

  • SQL データベースのエラー情報を提供するQSqlErrorクラス
  • QSql QueryはSQL文を実行および操作するためのメソッドを提供します
  • QSql QueryDatabaseはデータベースへの接続を処理します

1. データベース接続

 //MySQL データベースを追加します QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); 
        //データベースに接続 db.setHostName("127.0.0.1"); //データベースサーバーのIP
        db.setUserName("root"); //データベースのユーザー名 db.setPassword("root"); //データベースのユーザー名とパスワード db.setDatabaseName("sys"); //データベース名 if(db.open()==false)
        {
            QMessageBox::information(this,"データベースのオープンに失敗しました",db.lastError().text());
            戻る;
        }

失敗した場合は、QT が MySQL データベースに接続するためのライブラリ (libmysql.dll を自分でダウンロード) を必要とし、ライブラリ ファイルを QT インストール ディレクトリ D:\Qt\5.9\mingw53_32\bin (自分のディレクトリに応じて) に置く必要がある可能性があります。私の QT バージョンは 5.9 です。データベースは開いていますか? ユーザーが間違っていますか? このデータベースは存在しますか?

2. テーブルを作成する

QSqlQuery q;
q.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;");

3. テーブルにデータを挿入する

方法1 (単一行挿入)

q.exec("学生(ID、名前、年齢、スコア)に値(1、'张三'、24、80)を挿入します。");

方法2 (複数行挿入)はODBCスタイルとOracleスタイルに分かれています

1. ODBC スタイル

 q.prepare("insert into student(name, age,score) values(?, ?, ?)"); //? はプレースホルダー QVariantList name です。
   名前<<"素数"<<"待機中"<<"あんあん";
   QVariantList 年齢;
   年齢<<-2<<12<<14;
   QVariantList スコア;
   スコア<<0<<89<<90;
   //対応する値をフィールドに順番にバインドします q.addBindValue(name);
   q.addBindValue(年齢);
   q.addBindValue(スコア);
   //前処理コマンドを実行します q.execBatch();

#include<QVariantList>ヘッダーファイルを追加するには、フィールドを次の順序でバインドする必要があります。

2.オレーススタイルD

//プレースホルダー: + カスタム名 q.prepare("insert into student(name, age,score) values(:n, :a,:s)");
  QVariantList 名;
  名前<<"Quark"<<"Redmi"<<"Hongmeng";
  QVariantList 年齢;
  年齢<<5<<10<<3;
  QVariantList スコア;
  スコア<<77<<89<<99;
  // 次の理由により、フィールドを任意の順序でバインドします: + カスタム名 q.bindValue(":n",name);
  q.bindValue(":s",スコア);
  q.bindValue(":a",年齢);
  //前処理コマンドを実行します q.execBatch();

プレースホルダーの区別により、フィールドの順序は任意になります。

3. テーブルを更新する

QSqlQuery q;
        q.exec("学生を更新し、スコアを76に設定し、名前を'李四'に設定");

4. テーブルを削除する

QSqlQuery q;
        q.exec("delete from student where name='张三'");

5. テーブルをトラバースする

QSqlQuery q;
    q.exec("学生から*を選択");
    while(q.next()) // トラバーサル後は false
    {
        // 添え字付き //qDebug()<<q.value(0).toInt()<<q.value(1).toString()<<q.value(2).toInt() 
        <<q.value(3).toInt();
        //フィールドあり qDebug()<<q.value("id").toInt()<<q.value("name").toString()<<q.value("age").toInt() 
        <<q.value("スコア").toInt();
    }

QT を MYSQL データベースに接続する方法についての記事はこれで終わりです。QT を MYSQL データベースに接続する方法についての関連コンテンツについては、123WORDPRESS.COM で以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • PyQt で QtSql を使用して MySql データベースに接続する方法
  • Ubuntu Linux で Qt を使用して MySQL データベースに接続する方法
  • Python3+PyQt5 データベースプログラミング - 追加、削除、変更の例
  • python3+PyQt5 データベーステーブルビューを使用する
  • python3+PyQt5 データベースウィンドウビューを使用する

<<:  LinuxにKafkaをインストールする

>>:  初心者向け入門チュートリアル: ドメイン名の解決とバインディング

推薦する

Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法

1. Compose の紹介Compose は、マルチコンテナ Docker アプリケーションを定義...

MySQL 分離レベルの詳細な説明と例

目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...

CentOS 8.0.1905 は ZABBIX 4.4 バージョンをインストールします (検証済み)

Zabbix サーバー環境プラットフォームバージョン: ZABBIX バージョン 4.4システム:...

スクロールバーを非表示にしてコンテンツをスクロールする CSS サンプルコード

序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...

CSS のみを使用して折りたたまれたヘッダー効果を作成する方法の例コード

折りたたまれたヘッダーは、特別オファーや重要なお知らせなど、ユーザーにとって重要な情報を表示するのに...

CentOS7で新しいデータディスクをマウントするための完全な手順

序文新しい VPS を購入しました。新しい VPS のデータ ディスクはデフォルトではシステムにマウ...

コード標準では、SQL ステートメントに結合が多すぎないようにする必要があるのはなぜですか?

無料ポイントインタビュアー:Linuxを使ったことはありますか?私:はいインタビュアー:メモリ使用量...

MySQL 5.7 および MySQL 8.0 でルートパスワードを変更する方法の概要

MySQL 5.7 バージョン:方法1: SET PASSWORDコマンドを使用するフォーマット: ...

SQLクエリの実行順序をゼロから学ぶ

SQL クエリ ステートメントの実行順序は次のとおりです。 (7)選択 (8) DISTINCT &...

MySQLの左結合と内部結合について簡単に説明します

序文最近、X 省のコールド チェーン トレーサビリティ システムの開発で忙しくしています。毎日午後 ...

VMware 仮想マシン ubuntu18.04 インストール チュートリアル

インストール手順1. 仮想マシンを作成する 2. [カスタム(詳細)]を選択し、[次へ]をクリックし...

HTML の入力の readonly 属性と disabled 属性の違いについて簡単に説明します。

「読み取り専用」と「無効」はどちらも、ユーザーがフォーム フィールドの内容を変更できないようにしま...

JSプロトタイプとプロトタイプチェーンについての簡単な説明

目次1. プロトタイプ2. プロトタイプポインタ: __proto__要約する1. プロトタイプJa...

Vue v-onディレクティブの使用について

目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...