Heim  >  Artikel  >  Datenbank  >  So betreiben Sie eine MySQL-Datenbank in Qt

So betreiben Sie eine MySQL-Datenbank in Qt

PHPz
PHPznach vorne
2023-06-03 08:52:312028Durchsuche

    1. Installieren Sie den Treiber

    (1) Installieren Sie

    Betreiben Sie die MySQL-Datenbank in Qt Zuerst müssen Sie die MySQL-Treiberdatei installieren und die Datei libmusql.dll unter MySQL in den Ordner bin unter dem Qt-Installationspfad kopieren.

    So betreiben Sie eine MySQL-Datenbank in Qt

    Fügen Sie die Datei libmysql.dll direkt in diesen Ordner ein.

    So betreiben Sie eine MySQL-Datenbank in Qt

    (2) Überprüfen Sie, ob der Treiber erfolgreich installiert wurde.

    Testen Sie nach erfolgreichem Kopieren, ob der Treiber installiert ist Erfolgreich ausgeführt und eine neue Datei erstellt, die Schnittstellenklasse Qt Designer ausgewählt und die Standardeinstellungen für nachfolgende Vorgänge beibehalten.

    So betreiben Sie eine MySQL-Datenbank in Qt

    Fügen Sie die folgenden Bibliotheken in die neu generierte .cpp-Datei ein

    #include <QSqlDatabase>
    #include <QDebug>
    #include <QMessageBox>  
    #include <QSqlError>    
    #include <QString>
    #include <QSqlQuery>
    #include <QVariantList>

    Fügen Sie den folgenden Code in den Konstruktor ein und klicken Sie auf Ausführen Wenn kein Warnfenster erscheint, ist die Installation erfolgreich. Andernfalls schlägt sie fehl.

    //添加一个数据库
        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-Datenbank verwenden

    (1) Ausführung einer einzelnen Anweisung

    Erstellen Sie zunächst ein QString-Objekt-SQL und schreiben Sie die auszuführende Anweisung Erstellen Sie dann in SQL eine Objektabfrage der Klasse QSqlQuery und rufen Sie deren Funktion exec() auf, um den Code in SQL auszuführen.

        QString sql = "insert into student (id,name,age,math) values (1,&#39;kaw&#39;,20,97)";	//书写想要执行的语句
        QSqlQuery query;	//创建一个QSqlQuery对象
        query.exec(sql);    //执行mysql语句

    (2) Ausführung mehrerer Anweisungen

    In SQL können mehrere Anweisungen gleichzeitig ausgeführt werden, indem jede Anweisung durch ein Semikolon getrennt wird. Die folgenden Vorgänge werden ausgeführt, um die Tabelle gleichzeitig hinzuzufügen, zu löschen und zu aktualisieren.

        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) Stapeloperation

    Methode 1: addBindValue()

    Geben Sie in der query.prepare()-Anweisung ein, was Sie ausführen möchten. in dem der einzugebende Wert durch „?“ ersetzt wird, wobei „?“ das Platzhalterzeichen ist. Wenn Sie die Werte hinzufügen, die Sie später festlegen möchten, können Sie idList, nameList, ageList und mathList verwenden. Um Fehler zu vermeiden, verwenden Sie bitte addBindValue() in der Reihenfolge von ID, Name, Alter und Mathematik, um Werte zu binden.

        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();

    Methode 2: bindValue()

    Verwenden Sie direkt einen benutzerdefinierten Namen, um die Bindung abzuschließen. Zu diesem Zeitpunkt können Sie die Bindungsreihenfolge selbst festlegen.

    	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) Abfrage

    Die abzufragende Tabelle lautet:

    So betreiben Sie eine MySQL-Datenbank in Qt

    nach dem Wert Der Wert kann ein Index oder ein Spaltenname sein. Nach dem Herausnehmen muss es in den entsprechenden Datentyp konvertiert werden.

    	//查询操作
        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();   
        }

    Abfrageergebnisse:

    So betreiben Sie eine MySQL-Datenbank in Qt

    Das obige ist der detaillierte Inhalt vonSo betreiben Sie eine MySQL-Datenbank in Qt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen