The first step is to add the corresponding database module (sql) to the project file ( .pro ) and introduce several classes (also the corresponding header files)
1. Database connection //Add MySQL database QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL"); //Connect to database db.setHostName("127.0.0.1"); //Database server IP db.setUserName("root"); //Database username db.setPassword("root"); //Database username and password db.setDatabaseName("sys"); //Database name if(db.open()==false) { QMessageBox::information(this,"Database open failed",db.lastError().text()); return; } If it fails, it may be that QT needs a library to connect to the MySQL database (download libmysql.dll yourself) and put the library file in the QT installation directory D:\Qt\5.9\mingw53_32\bin (according to your own directory). My QT version is 5.9. Is the database open? Is the user wrong? Does this database exist? 2. Create a table QSqlQuery q; q.exec("create table student(id int primary key auto_increment, name varchar(255), age int, score int)ENGINE=INNODB;"); 3. Insert data into the tableMethod 1 (Single row insert) q.exec("insert into student(id, name, age,score) values(1, '张三', 24,80);"); Method 2 (multi-row insert) is divided into ODBC style and Oracle style 1. ODBC style q.prepare("insert into student(name, age,score) values(?, ?, ?)"); //? is a placeholder QVariantList name; name<<"prime number"<<"waiting"<<"An An"; QVariantList age; age<<-2<<12<<14; QVariantList score; score<<0<<89<<90; //Bind the corresponding values to the fields in order q.addBindValue(name); q.addBindValue(age); q.addBindValue(score); //Execute preprocessing commands q.execBatch(); To add #include<QVariantList> header file, the fields should be bound in order 2.orace style d //Placeholder: + custom name q.prepare("insert into student(name, age,score) values(:n, :a,:s)"); QVariantList name; name<<"Quark"<<"Redmi"<<"Hongmeng"; QVariantList age; age<<5<<10<<3; QVariantList score; score<<77<<89<<99; // Bind the fields in any order because of: + custom name q.bindValue(":n",name); q.bindValue(":s",score); q.bindValue(":a",age); //Execute preprocessing commands q.execBatch(); The order of fields can be arbitrary due to the placeholder distinction 3. Update table QSqlQuery q; q.exec("update student set score=76 where name='李四'"); 4. Delete the table QSqlQuery q; q.exec("delete from student where name='张三'"); 5. Traverse the table QSqlQuery q; q.exec("select *from student"); while(q.next()) // false after traversal { //With subscript //qDebug()<<q.value(0).toInt()<<q.value(1).toString()<<q.value(2).toInt() <<q.value(3).toInt(); //With field qDebug()<<q.value("id").toInt()<<q.value("name").toString()<<q.value("age").toInt() <<q.value("score").toInt(); } This is the end of this article about QT connecting to MYSQL database. For more relevant content about QT connecting to MYSQL database, please search for previous articles on 123WORDPRESS.COM or continue to browse the related articles below. I hope everyone will support 123WORDPRESS.COM in the future! You may also be interested in:
|
<<: Summary of CSS gradient effects (linear-gradient and radial-gradient)
>>: Getting Started Tutorial for Beginners: Domain Name Resolution and Binding
Locks in MySQL Locks are a means to resolve resou...
Table of contents Vue.js 1. Register global guard...
<br />Previous article: Seven Principles of ...
1. Pull the official 5.0.3 image [root@localhost ...
1. Installation and use First, install it in your...
Recently, Oracle announced the public availabilit...
This article shares with you how to use Navicat t...
<div class="box"> <img /> &...
background The company code is provided to third ...
Not only do different browsers behave differently...
The first one: Using the CSS position property &l...
1. Unzip nginx-1.8.1.tar.gz 2. Unzip fastdfs-ngin...
This article shares the specific code of vue echa...
This article mainly introduces the pie chart data...
Preface The electricity in my residence has been ...