mysql 与QT的连接
第一步:安裝
qt開發環境
bi@bi-desktop:~$sudo?apt-get?install?qt4-dev-tools?qt4-doc?qt4-qtconfig?qt4-demos?qt4-designer?
?
第二步:安裝
mysql開發環境
?
bi@bi-desktop:~$sudo?apt-get?install?mysql-server?mysql-client?
bi@bi-desktop:~$sudo?apt-get?install?libmysqlclient15-dev?
?
bi@bi-desktop:~$sudo?apt-get?install?libqt4-sql-mysql?
bi@bi-desktop:~$sudo?/etc/init.d/mysql?restart?
?
第三步:給普通用戶授權操作數據庫
?
bi@bi-desktop:~$?mysql?-u?root?-p ? ? ?//之后輸入密碼就可以連接的上了
mysql>?create?database?hanle; ?(創建一個數據庫) //特別要注意后面的分號,最開始我用的時候就吃虧在那個地方
mysql>?grant?all?privileges?on?*.*?to?han@localhost ?identified?by?'123456';?
mysql>?quit;?
給特定用戶分配數據操作權限的格式是:?
grant?權限1,權限2,?on?數據庫名稱?表名稱?to?用戶名@當前主機?ip?地址? identified ?by?'密碼';?
?
第四步:測試環境
?//注意此步實在創建的QT控制臺應用程序
#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("hanle");?
db.sethan("han");?
db.setpassword("123456");?
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
風格
?
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
風格
?
/*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();?
}??
編譯:
.pro文件里加上下面一行:?
QT?+=?sql
轉載于:https://www.cnblogs.com/haoxing990/p/4583288.html
總結
以上是生活随笔為你收集整理的mysql 与QT的连接的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防止NSTimer和调用对象之间的循环引
- 下一篇: android intent 5.1