本文介紹的是詳解Ubuntu10.10下Qt連接Mysql數(shù)據(jù)庫(kù),Mysql 也成為了一種流行的數(shù)據(jù)庫(kù),我們先來(lái)看內(nèi)容。
詳解Ubuntu10.10下Qt連接Mysql數(shù)據(jù)庫(kù)是本文要介紹的內(nèi)容,很詳細(xì)的步驟,我們先來(lái)看內(nèi)容。
***步:安裝qt開(kāi)發(fā)環(huán)境
- xhy@xhy-desktop:~$sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer
第二步:安裝mysql開(kāi)發(fā)環(huán)境
- xhy@xhy-desktop:~$sudo apt-get install mysql-server mysql-client
- xhy@xhy-desktop:~$sudo apt-get install libmysqlclient15-dev
- xhy@xhy-desktop:~$sudo apt-get install libqt4-sql-mysql
- xhy@xhy-desktop:~$sudo /etc/init.d/mysql restart
第三步:給普通用戶(hù)授權(quán)操作數(shù)據(jù)庫(kù)
- xhy@xhy-desktop:~$ mysql -u root -p (root登錄數(shù)據(jù)庫(kù))
- mysql> create database mydb; (創(chuàng)建一個(gè)數(shù)據(jù)庫(kù))
- mysql> grant all privileges on *.* to username@localhost identified by 'password';
- mysql> quit;
給特定用戶(hù)分配數(shù)據(jù)操作權(quán)限的格式是:
grant 權(quán)限1,權(quán)限2,...權(quán)限n on 數(shù)據(jù)庫(kù)名稱(chēng).表名稱(chēng) to 用戶(hù)名@用戶(hù)ip地址 identified by '密碼';
第四步:測(cè)試環(huán)境
- #include <QApplication>
- #include <QtSql>
- #include <QTableView>
- #include <iostream>
-
- using namespace std;
-
- int main(int argc, char *argv[])
- {
- QApplication app(argc, argv);
-
- QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
- db.setHostName("localhost");
- db.setDatabaseName("mydb");
- db.setUserName("username");
- db.setPassword("password");
- db.open();
-
- QSqlQuery query;
- query.exec("create table hello(id bigint not null auto_increment,name varchar(255),age bigint,primary key (id))");
- /*query.exec("insert into hello(name, age) values('xiaoxi', 18)");
- query.exec("insert into hello(name, age) values('xiaonan', 19)");
- query.exec("insert into hello(name, age) values('xiaobei', 20)");
- query.exec("insert into hello(name, age) values('xiaodong', 21)");*/
-
- //ODBC風(fēng)格
- query.prepare("insert into hello(name, age)" "values(?, ?)");
- query.addBindValue("xiaoxi");
- query.addBindValue(18);
- query.exec();
- query.addBindValue("xiaonan");
- query.addBindValue(19);
- query.exec();
- query.addBindValue("xiaobei");
- query.addBindValue(20);
- query.exec();
- query.addBindValue("xiaodong");
- query.addBindValue(21);
- query.exec();
-
- //Oracle風(fēng)格
- /*query.prepare("insert into hello(name, age) values(:name, :age)");
- query.bindValue(":name", "xiaoxi");
- query.bindValue(":age", 18);
- query.exec();
- query.bindValue(":name", "xiaonan");
- query.bindValue(":age", 19);
- query.exec();
- query.bindValue(":name", "xiaobei");
- query.bindValue(":age", 20);
- query.exec();
- query.bindValue(":name", "xiaodong");
- query.bindValue(":age", 21);
- query.exec();*/
-
- QSqlQueryModel *model = new QSqlQueryModel;
- model->setQuery("select * from hello");
- model->setHeaderData(0, Qt::Horizontal, "id");
- model->setHeaderData(1, Qt::Horizontal, "name");
- model->setHeaderData(2, Qt::Horizontal, "age");
- QTableView *view = new QTableView;
- view->setWindowTitle("QSqlQueryModel");
- view->setModel(model);
- view->show();
-
- /*QSqlTableModel *model = new QSqlTableModel;
- model->setTable("hello");
- model->select();
- for (int i = 0; i < model->rowCount(); ++i)
- {
- QSqlRecord record = model->record(i);
- int id = record.value(0).toInt();
- QString name = record.value(1).toString();
- int age = record.value(2).toInt();
- cout << id << " " << qPrintable(name) << " " << age << endl;
- }*/
- db.close();
- return app.exec();
- }
編譯:
- xhy@xhy-desktop:~$ qmake -project
- xhy@xhy-desktop:~$ qmake
一定別忘了在工程的.pro文件里加上下面一行:
- QT += sql
- xhy@xhy-desktop:~$make
- xhy@xhy-desktop:~$./mysql
小結(jié):關(guān)于詳解Ubuntu 10.10下Qt連接Mysql數(shù)據(jù)庫(kù)的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!