第一步:安装

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

最新文章

  1. JavaWeb 学习004-增删改查的编写
  2. JS MD5
  3. 我的STL之旅 MyStack
  4. oracle中的查询语句(关于出库入库信息表,明细表,把捆包箱表,单位信息表的集中查询)
  5. spilt()的用法
  6. c# 将字符串转换为逻辑表达式(字符串转换布尔)
  7. Oracle数据库备份与恢复的常用方法
  8. 获取一年时间的sql
  9. Oracle10g 回收站及彻底删除table : drop table xx purge
  10. ajaxSubmit() 上传文件和进度条显示
  11. php用正则表达式获取网站的标题内容
  12. cf C. Levko and Array Recovery
  13. 第25周五迷茫定位&amp;转行理论建议
  14. poj 1459 (最大流)
  15. Android.mk参数解释
  16. HUST 1555 A Math Homework
  17. 20160227.CCPP体系详解(0037天)
  18. ajax接收php返回得到一堆html代码
  19. html表单的使用
  20. poj3258 River Hopscotch(二分最小值,好题)

热门文章

  1. CF ECR59div2 D
  2. eclipse导入mavn工程报Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法
  3. Linux--NiaoGe-Service-05
  4. CF1072B Curiosity Has No Limits
  5. Android 面试总结~~~
  6. 包含日志文件getshell
  7. OpenGL列主元矩阵和列主序存储
  8. codeforces Gym 100338E Numbers (贪心,实现)
  9. 51Nod 1007 正整数分组 -简单DP
  10. HTML5资源汇总(更新游戏引擎cocos2d-html5)