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をインストールする

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

推薦する

Tomcat マルチポートドメイン名アクセスと gzip 圧縮方式を有効にする構成

1. デフォルトのポート8080に加えて、ドメイン名のアクセスとserver.xmlのオープンにポー...

美しいチェックボックススタイル(複数選択ボックス)はIE8/9/10、FFなどと完全に互換性があります。

恥ずかしながら、このようなよく使われるチェックボックスのスタイルを変更するために、Baidu で長い...

MySQL トランザクション同時実行問題の解決

開発中にこのような問題に遭遇しましたビデオ視聴記録が 100 に更新されると、視聴されたことを意味し...

JS でパブリッシュ サブスクライブ モデルを作成する

目次1. シーン紹介2 コードの最適化2.1 ファンを増やす問題を解決する2.2 作品追加の問題を解...

Ember.js と Vue.js の詳細な比較

目次概要フレームワークを選択する理由は何ですか? js のエンバーEmber.js と Vue.js...

Win10 システムに MySQL8.0.13 をインストールする際の問題と解決策

オペレーティングシステム: Windows10 MySQL バージョン: 8.0.13-winx64...

ウェブページにプレーヤーを埋め込む埋め込み要素の自動開始が false 無効

最近、仕事でサウンド ファイルを再生するために Web ページにプレーヤーを埋め込む必要に迫られまし...

MySQL テーブル構造を Excel にエクスポートする方法

要件は次のとおりですテーブル構造、フィールドコメント情報、テーブル名などをエクスポートします。これは...

ウェブページ要素の完全な分析

相対的な長さの単位それら説明: 相対的な長さの単位。現在のオブジェクト内のテキストのフォント サイズ...

MySQL マルチインスタンス インストール ブート自動起動サービス設定プロセス

1.MySQLの複数インスタンスMySQL マルチインスタンスとは、1 台以上のマシン上で複数の M...

MySQLの自動増分主キーIDはこのように処理されません

MySQLの自動増分主キーIDは段階的に増加しません1. はじめにMySQL データベースにデータを...

Windows Server 2012 でファイル サーバーを構築するための詳細な手順

ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...

JavaScript の条件付きアクセス属性と矢印関数の紹介

目次1. 条件付きアクセス属性2. アロー関数の紹介1. 条件付きアクセス属性?. は ES2020...

フォームから Vue ElementUI を使用してログイン効果を実装する例

目次1. ElementUIで基本的なスタイルを構築する2. [送信]ボタンをクリックして、アカウン...