詳解Qt數(shù)據(jù)庫(kù)的鏈接與如何使用SQL
Qt數(shù)據(jù)庫(kù)的鏈接與如何使用SQL是本文要介紹的內(nèi)容,主要是來學(xué)習(xí)QT中數(shù)據(jù)庫(kù)的鏈接和SQL如何來使用,具體內(nèi)容的實(shí)現(xiàn)來看本文詳解。
一直沒接觸數(shù)據(jù)庫(kù),前一陣突然有機(jī)會(huì)用了用MySQL,順手把SQL語法學(xué)了一遍,學(xué)完了手癢癢,一想Qt可以結(jié)合數(shù)據(jù)庫(kù),就順便試了下Qt鏈接數(shù)據(jù)庫(kù)與使用SQL。SQL部分就不說了,Qt先說鏈接部分。
1、先做數(shù)據(jù)庫(kù)驅(qū)動(dòng)
現(xiàn)在Qt SDk for windows里面已經(jīng)有ODBC的驅(qū)動(dòng)了,我當(dāng)時(shí)現(xiàn)做了個(gè)MySQL的驅(qū)動(dòng)(其實(shí)我當(dāng)時(shí)是沒看見有ODBC),因?yàn)槲沂褂肕inGW,所以先使用remip.exe把MySQL/opt里面的 LibMySQL.lib轉(zhuǎn)成.a(使用MSVC的就可以跳過這步了)。然后再進(jìn)qt/src/plugins/sqldriver/mysql 編譯出驅(qū)動(dòng)
- QMAKE -o Makefile "INCLUDEPATH+=MYSQL/INCLUDE" "LIBS+=MYSQL/LIB/OPT/libmysql.a" mysql.pro
注意下qmake的參數(shù)就行了 再make, 這部分網(wǎng)上說的很詳細(xì),
2、Qt使用SQL
主要是下面的幾個(gè)類
QSqlDatabase 建立于數(shù)據(jù)庫(kù)的鏈接
QSqlQuery 用于執(zhí)行SQL語句
QSqlTableModel 結(jié)合QTableView可以輸出數(shù)據(jù)庫(kù)的表
貼下我寫的簡(jiǎn)單Demo
- QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"/*"QODBC"*/); // becomes the new default connection
- db.setUserName("root");//用戶名
- db.setPassword("password");//密碼
- db.setHostName("localhost");
- db.setDatabaseName("test");//數(shù)據(jù)庫(kù)名
- db.setConnectOptions("CLIENT_SSL=1;CLIENT_IGNORE_SPACE=1");//使用SSL
- db.setPort(3306);//端口
- if(db.open()){
- qDebug()<<"open/n"<<db.lastError().driverText()<<"/n";
- }
- else{
- qDebug()<<"open faile/n";
- }
- QSqlQuery query;//用于執(zhí)行SQL語言
- query.exec("show databases");//很方便的
- while (query.next()) {
- qDebug()<<query.value(0).toString()<<"/n";
- }
- QSqlTableModel *model = new QSqlTableModel;//間接將數(shù)據(jù)庫(kù)表裝入QTableView
- model->setTable("people"); //表名
- model->setEditStrategy(QSqlTableModel::OnManualSubmit);
- model->select();
- //model->removeColumn(0); // don't show the ID
- //model->setHeaderData(0, Qt::Horizontal, QObject::tr("ID"));
- model->setHeaderData(0, Qt::Horizontal, tr("Name"));
- model->setHeaderData(1, Qt::Horizontal, tr("Age"));
- model->setHeaderData(2, Qt::Horizontal, tr("Sex"));
- QTableView *view = new QTableView(this);
- view->setModel(model);
- db.close();
- QGridLayout * gl=new QGridLayout();
- gl->addWidget(view);
- this->setLayout(gl);
小結(jié):詳解Qt數(shù)據(jù)庫(kù)的鏈接與如何使用SQL的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!