第一步:安装

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

mysql 与QT的连接的更多相关文章

  1. vs整合MySQL和QT

    23:37:23 2019-08-12 尝试用vs写一个程序整合MySQL和QT 参考资料:https://blog.csdn.net/qq_35987486/article/details/8406 ...

  2. 解决 LINUX mysql不能通过IP连接 只能localhost 权限没问题情况下

    最近朋友的一个服务器出现了一个奇怪的问题,弄了两个星期没有解决,在哥坚持不懈的努力下,终于解决了问题.发出来给需要的朋友. 问题:php程序连接mysql只能使用localhost,不能使用127.0 ...

  3. 安装好mysql后允许远程连接

    安装好mysql后允许远程连接 http://blog.sina.com.cn/s/blog_3eba8f1c0100tsox.html http://blog.csdn.net/zxyvb/arti ...

  4. 如何登录mysql? cmd怎么连接mysql数据库

    Mysql开源数据库,任何人都可以下载安装使用.那么安装好的mysql如何登陆连接mysql数据库呢? 连接mysql数据库的几种方法 一 Mysql命令行连接 一般对于刚刚安装好的mysql,如果勾 ...

  5. 远程连接mysql,mysql如何开启远程连接

    很多时候,mysql只需要开本地连接,也就是本机(服务器本身)连接就可以,默认也是这样,默认也不支持远程连接 但有的时候,我们需要将mysql独立出一台主机或数据库,放到另一台机器的时候,这时,就需要 ...

  6. MySQL优化二(连接优化和缓存优化)

    body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-top: 10 ...

  7. mysql自动断开该连接解决方案

    mysql连接的空闲时间超过8小时后 MySQL自动断开该连接解决方案 作者: MySQL 的默认设置下,当一个连接的空闲时间超过8小时后,MySQL 就会断开该连接,而 c3p0 连接池则以为该被断 ...

  8. 连接mysql用mysql_connect不能连接

    用mysqli_connect就可以解决. mysqli_array()有连个参数,第一个是连接mysql名. php遇到这个警告Warning: Use of undefined constant ...

  9. mysql数据库可以远程连接或者说用IP地址可以访问

    mysql数据库可以远程连接或者说用IP地址可以访问 一般情况不建议直接修改root的权限, 先看下,自己mysql数据库的用户级权限 mysql -u root -p----->用root登陆 ...

随机推荐

  1. 找回phpstorm删除文件/文件夹(phpstorm删除文件/文件夹的恢复)

    恢复phpstorm删除文件/文件夹 再开发的过程中,不小心删除了一个文件夹,后来百度了一下如何恢复,还好PHPStorm是个十分强大的编辑器,不小心删除了文件还可以恢复.一下是恢复的操作: 打开Vi ...

  2. MFC中的模态对话框与非模态对话框

    模态对话框创建: MyDialog mydlg; mydlg.DoModal() 当前只能运行此模态对话框,且停止主窗口的运行,直到模态对话框退出,才允许主窗口运行. 模态对话框的关闭顺序: OnCl ...

  3. python Windows和Linux路径表示问题

    Windows下路径是用‘\\’表示也可以使用'/',但是Linux下路径都是‘/’表示. 因为python是跨平台的,有时候程序迁移会出现错误. 解决办法1 可全部使用‘/’表示 解决办法2 我们可 ...

  4. [在读]HTML5数据推送应用开发

    最近买的,讲SSE的,才看完前2章.

  5. java设计模式--建造模式

    建造模式 建造模式属于对象创建型模式,建造模式的目的为将复杂对象的构建过程与其部件实现方式分离,使得同样的构建过程可以有不同的表示,同时相同的构建过程也能够适用于不同的部件实现方式. 建造模式的适用性 ...

  6. 【踩坑】Safari不兼容webpack封装的vue项目

    刚完成 Iblog 博客项目,在 chrome 浏览器调试完后,用 Safari 打开网站,页面一直停留在加载状态. 后来网上说这是 Safari 不支持 ES6 所致. 经过搜索,在 github ...

  7. 【详解】JS中的作用域、闭包和回收机制

    在讲解主要内容之前,我们先来看看JS的解析顺序,我们惯性地觉得JS是从上往下执行的,所以我们要用一个变量来首先声明它,来看下面这段代码: alert(a); var a = 1; 大家觉得这段代码有什 ...

  8. Python实现扫描作业配置自动化

    持续集成平台接入扫描作业是一项繁琐而又需要细致的工作,于是趁着闲暇时间,将代码扫描作业用Python代码实现了配置自动化. 每次配置作业的过程中,都会在checkcode1或者checkcode3上 ...

  9. 批处理文件 bat

    删除D盘的所有文件:del /a /f /q d:\*.* 删除指定目录的指定扩展名的文件:del /a /f /q 目录:\*.jpg 删除当前目录下的指定扩展名的文件(指定扩展名为jpg):del ...

  10. navicate连接mysql

    1. 打开navicate,选择连接 2. 编辑连接属性 编辑完成之后,连接成功.