詳解Qt數據庫的鏈接與如何使用SQL
Qt數據庫的鏈接與如何使用SQL是本文要介紹的內容,主要是來學習QT中數據庫的鏈接和SQL如何來使用,具體內容的實現來看本文詳解。
一直沒接觸數據庫,前一陣突然有機會用了用MySQL,順手把SQL語法學了一遍,學完了手癢癢,一想Qt可以結合數據庫,就順便試了下Qt鏈接數據庫與使用SQL。SQL部分就不說了,Qt先說鏈接部分。
1、先做數據庫驅動
現在Qt SDk for windows里面已經有ODBC的驅動了,我當時現做了個MySQL的驅動(其實我當時是沒看見有ODBC),因為我使用MinGW,所以先使用remip.exe把MySQL/opt里面的 LibMySQL.lib轉成.a(使用MSVC的就可以跳過這步了)。然后再進qt/src/plugins/sqldriver/mysql 編譯出驅動
- QMAKE -o Makefile "INCLUDEPATH+=MYSQL/INCLUDE" "LIBS+=MYSQL/LIB/OPT/libmysql.a" mysql.pro
注意下qmake的參數就行了 再make, 這部分網上說的很詳細,
2、Qt使用SQL
主要是下面的幾個類
QSqlDatabase 建立于數據庫的鏈接
QSqlQuery 用于執行SQL語句
QSqlTableModel 結合QTableView可以輸出數據庫的表
貼下我寫的簡單Demo
- QSqlDatabase db =QSqlDatabase::addDatabase("QMYSQL"/*"QODBC"*/); // becomes the new default connection
- db.setUserName("root");//用戶名
- db.setPassword("password");//密碼
- db.setHostName("localhost");
- db.setDatabaseName("test");//數據庫名
- 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;//用于執行SQL語言
- query.exec("show databases");//很方便的
- while (query.next()) {
- qDebug()<<query.value(0).toString()<<"/n";
- }
- QSqlTableModel *model = new QSqlTableModel;//間接將數據庫表裝入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);
小結:詳解Qt數據庫的鏈接與如何使用SQL的內容介紹完了,希望通過本文的學習能對你有所幫助!