Rumah > Artikel > pangkalan data > Bagaimana untuk mengendalikan pangkalan data MySQL dalam Qt
Untuk mengendalikan pangkalan data MySQL dalam Qt, anda mesti memasang mysql terlebih dahulu. fail pemacu. Hanya salin fail libmusql.dll di bawah MySQL ke folder bin di bawah laluan pemasangan Qt.
Tampal fail libmysql.dll terus ke dalam folder ini.
Selepas menyalin berjaya, uji sama ada pemacu berjaya dipasang, cipta fail baharu dan pilih kelas antara muka pereka Qt, dan semua operasi seterusnya boleh disimpan sebagai lalai.
Perkenalkan perpustakaan berikut ke dalam fail .cpp yang baru dijana
#include <QSqlDatabase> #include <QDebug> #include <QMessageBox> #include <QSqlError> #include <QString> #include <QSqlQuery> #include <QVariantList>
Masukkan kod berikut dalam pembina, dan kemudian klik Jalankan, jika tiada tetingkap amaran timbul Ia bermakna pemasangan berjaya, jika tidak, ia gagal.
//添加一个数据库 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()); }
Mula-mula buat objek QString sql, tulis pernyataan yang akan dilaksanakan dalam sql, dan kemudian buat Kelas QSqlQuery Pertanyaan objek memanggil fungsi exec() untuk melaksanakan kod dalam sql.
QString sql = "insert into student (id,name,age,math) values (1,'kaw',20,97)"; //书写想要执行的语句 QSqlQuery query; //创建一个QSqlQuery对象 query.exec(sql); //执行mysql语句
Dalam sql, berbilang pernyataan boleh dilaksanakan pada masa yang sama dengan memisahkan setiap pernyataan dengan koma bertitik. Operasi berikut dilakukan untuk menambah, memadam dan mengemas kini jadual pada masa yang sama.
QString sql = "insert into student (id,name,age,math) values (13,'kaw',20,97);delete from student where id=2;update student set name='sdd',math=100 where id=10;"; QSqlQuery query; //创建一个QSqlQuery对象 query.exec(sql); //执行mysql语句
Kaedah 1: addBindValue()
Masukkan penyataan yang anda ingin laksanakan dalam query.prepare(), di mana to-be- dimasukkan Nilai digantikan dengan "?", di mana "?" ialah aksara kad bebas. Apabila menambah nilai yang anda ingin tetapkan kemudian, anda boleh menggunakan idList, nameList, ageList dan mathList. Untuk mengelakkan ralat, sila gunakan addBindValue() dalam susunan id, nama, umur dan matematik untuk mengikat nilai.
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();
Kaedah 2: bindValue()
Gunakan nama tersuai secara langsung untuk melengkapkan pengikatan Pada masa ini, urutan pengikatan boleh diputuskan sendiri.
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) Pertanyaan
Jadual yang akan disoal ialah:
Nilai selepas nilai boleh menjadi indeks atau lajur nama. Selepas mengeluarkannya, ia perlu ditukar kepada jenis data yang sepadan.
//查询操作 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(); }
Hasil pertanyaan:
Atas ialah kandungan terperinci Bagaimana untuk mengendalikan pangkalan data MySQL dalam Qt. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!