qtsql
❶ qt4中连接mysql出现Cannot open include file: 'QSqlError': No such file or directory
如果确定有QSqlError的话,在project(生成的.pro文件)文件里添加QT += sql 试试
❷ qt引用QSqlDataBase编译不通过,求解
在qt的pro文件里加上QT+=sql,重新qmake一下pro文件,就能编过去了
❸ qt不能包含数据库QtSql
我今天遇到了跟你一样的问题,5.1.1的版本,我刚刚试了路径修复后,又出现下面的错误,不过编译demo却是正常的,不知道哪里设置错了
❹ QT中使用Mysql 查询时出现错误,代码如下
1:首先我编译了一个release版本,而后用dependency walker查看了下库的依赖情况。发现依赖于:QtSql4.dll,QtGui4.dll,QtCore4.dll,msvcr80.dll以及 KERNEL32.DLL这几个库。其中最后一个是system的,我们不用去管,剩下的这几个显然都需要拷贝到exe同目录下。 尤其是msvcr80.dll,我在我电脑上搜了一下:有多大10几个同名的该文件,所以拷贝哪个是很重要的,此时我们只需要在dependency walker查看这个dll的属性,然后去对应目录底下拷贝就行了。 所以:第一步就是把这些依赖库拷贝到exe同目录下。(千万不要拷贝错误,尤其是不同的版本)
❺ QT如何实现QSqltablemodel实时更新数据库,并在tableview中实时显示,
在QT的widget中用tableview显示sqlite数据库表中的内容。
假设有数据库文件test.db,有表table(id integer, name nvarchar(20),age integer),且有数条数据。
首先用QTcreator创建一个基于Widget类的窗口,再拖一个tableview到widget中,保存,然后按照如下方法进行:
1.在widget.h中增添头文件:QtSql/qsql.h、QtSql/QsqlDatabase、QtSql/QsqlQuery、QtSql/QsqlQueryModel
2.在.pro工程文件中添加:QT+=sql
3.在widget.cpp中widget的构造函数中添加如下代码:
QsqDatabase db = QsqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("test.db");
if(!db.open())
{
//错误处理
}
static QSqlQueryModel *model = new QSqlQueryModel(ui->tableview);
model->setQuery(QString("select * from table"));
model->setHeaderData(0,Qt::Horizontal,QObject::tr("编号"));
model->setHeaderData(1,Qt::Horizontal,QObject::tr("姓名"));
model->setHeaderData(2,Qt::Horizontal,QObject::tr("年龄"));
ui->tableview->setModel(model);
db->close();
这样之后,table表里的内容就会显示到tableview中了。
❻ qt数据库 qsqlquerymodel中setheaderdata怎么设置中文
Qt数据库 QSqlQueryModel实例操作 上篇是本文要介绍内容中一节,分为上下篇。在上一篇的最后我们说到,Qt中使用了自己的机制来避免使用SQL语句,它为我们提供了更简单的数据库操作和数据显示模型。它们分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRelationalTableModel。这次我们先讲解QSqlQueryModel。
QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作。
我们新建Qt4 Gui Application工程,我这里工程名为queryModel ,然后选中QtSql模块,Base class选
❼ qt数据库程序#include<QtSql> 提示错误找不到该文件或目录
在XXX.pro文件中添加一行
QT += sql
❽ 用Qt 和SQLite数据库写了一个软件 怎么打包在别的windows上用啊 其他电脑需要安装SQLite吗
#包括&LT; QtGui和GT;
#包括&LT; QtSql和GT;
#包括:QUOT; scooterwindow.h&QUOT;
ScooterWindow :: ScooterWindow()
模式=新QSqlTableModel的(这一点);
建模与GT;可设置(与QUOT,摩托车及QUOT);
建模与GT; setSort(Scooter_Name下,Qt :: AscendingOrder);
建模与GT; setHeaderData(Scooter_Name下,Qt ::水平,TR(&QUOT;名称及QUOT));
建模与GT; setHeaderData(Scooter_MaxSpeed下,Qt ::水平,TR(&QUOT;公共卫生与QUOT)); 建模与GT; setHeaderData(Scooter_MaxRange下,Qt ::水平,TR(&QUOT;的Miles&QUOT));
建模与GT; setHeaderData(Scooter_Weight下,Qt ::水平,TR(&QUOT;磅&QUOT));
建模与GT; setHeaderData(Scooter_Description下,Qt ::水平,
TR(&QUOT;简介:QUOT));
建模与GT;选择();
查看=新QTableView中;
取景和GT;则setModel(模型);
取景和GT;的setSelectionMode(QAbstractItemView :: SingleSelection);
取景和GT; setSelectionBehavior(QAbstractItemView :: SelectRows);
取景和GT; setColumnHidden(Scooter_Id,TRUE);
取景和GT; resizeColumnsToContents();
取景和GT; setEditTriggers(QAbstractItemView :: NoEditTriggers);
QHeaderView *标题=取景和GT; horizontalHeader();
报头 - 和GT; setStretchLastSection(真);
QHBoxLayout * mainLayout =新QHBoxLayout;
mainLayout-和GT; addWidget(视图);
setLayout(mainLayout);
setWindowTitle(TR(&QUOT,摩托车及QUOT));
#ifndef SCOOTERWINDOW_H #定义SCOOTERWINDOW_H
#包括&LT; QWidget的和GT;
QSqlTableModel的类;
类QTableView中;
枚举{
Scooter_Id = 0,
Scooter_Name = 1,
Scooter_MaxSpeed'= 2,
Scooter_MaxRange = 3,
Scooter_Weight = 4,
Scooter_Description = 5
};
类ScooterWindow:公众的QWidget
市民:
ScooterWindow();
私人:
* QSqlTableModel的模型;
QTableView中*视图;
};
#包括&LT; QtGui和GT;
包括:LT; QtSql和GT;
#包括:QUOT; scooterwindow.h&QUOT;
布尔创建连接()
QSqlDatabase DB = QSqlDatabase:addDatabase(&QUOT; QSQLITE&QUOT);
db.setDatabaseName(&QUOT; scooters.dat&QUOT);
如果{
QMessageBox提示::警告(0,的QObject :: TR(&QUOT(db.open()!);数据库错误和QUOT),
db.lastError()文本());。
返回false;
返回true;
无效createFakeData()
QSqlQuery查询;
query.exec(]下拉表摩托车及QUOT);
查询.exec(&QUOT; CREATE TABLE摩托车(&QUOT;
&QUOT; ID INTEGER PRIMARY KEY自动增量,与QUOT;
&QUOT;名称VARCHAR(40) NOT NULL,&QUOT;
&QUOT; MAXSPEED INTEGER NOT NULL,&QUOT;
&QUOT; maxrange INTEGER NOT NULL,&QUOT;
&QUOT;重INTEGER NOT NULL,&QUOT ;
&QUOT;描述VARCHAR(80)NOT NULL)QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('MOD- RAD 1500“,40,35,298,和QUOT;
&QUOT,”车速表,里程表,电池计量器,转向灯和QUOT;
&QUOT;指标,锁定转向柱')QUOT; );
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('Rad2Go大白色E36',22,12,93,和QUOT;
&QUOT; '10 \&QUOT,无气轮胎“)QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('X-极端X360',21,14,59,和QUOT;
&QUOT,“货物架,可折叠')QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('Vego SX 600',20,,76,和QUOT;
&QUOT;'两个可互换电池,可折叠')QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('太阳鸟é自行车',18,30,118,'')&QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('豹鲨',16,12,63,和QUOT;
&QUOT,“电池指示器,可移动座椅,可折叠')QUOT); query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('Vego智商450',15,0,60,和QUOT;
&QUOT;'缺货')QUOT的);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('X-极端的X 11',15,11,38,和QUOT;
&QUOT,“高动力刹车,可折叠')QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('ZZ巡洋舰',14,10,46,和QUOT;
&QUOT;'两节电池,可移动座椅“)QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('X-极端的X 010,10,10,14,和QUOT;
&QUOT;'实心轮胎“)QUOT);
查询.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('Q电战车',10,15,60,及QUOT;
&QUOT;'折叠')&QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)例中的&QUOT; VALUES('X-极端X250',15,12,0,&QUOT;
&QUOT,“固体铝甲板”)QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('去MotorBoard 2000X“,15,0,20,及QUOT;
&QUOT;'折叠和carryable')&QUOT);
query.exec(&QUOT; INSERT INTO摩托车(姓名,MAXSPEED,与QUOT;
&QUOT; maxrange,重量说明)QUOT;
&QUOT; VALUES('Goped ESR750康电动滑板车“,与QUOT;
&QUOT,20,6,45,和QUOT;&QUOT;'折叠和carryable')QUOT);
INT主要(诠释的argc,char *的的argv [])
的QApplication的应用程序(的argc,argv的);
布尔创建=一个QFile ::存在(与QUOT;!摩托车.DAT&QUOT);
返回1(创建连接()!);
如果(创建)
createFakeData();
ScooterWindow窗口;
window.resize(600,500);
window.show();
回报app.exec();
}
❾ 如何解决Qt Mysql中无法加载驱动问题
本文讲解是如何解决Qt Mysql中无法加载驱动问题,MySQL是一个小型关系型数据库管理系统。对于已经融入到Qt中的MySQL,也是很推广!那么先看本文的介绍。
做毕业,这两天一个很大的问题困惑的我不行。毕设我是用qt + mysql来做的。结果在自己电脑上跑起来很正常,但是编译一个release版本,拿到另外一台电脑上就报错说:can't load driver 。试图去解决这个问题,今天总算搞定,这里总结一下。
首先需要说明的是:我用的是qt for vc2005,qt4.5.0 mysql server5.5
整个流程:
1:首先我编译了一个release版本,而后用dependency walker查看了下库的依赖情况。发现依赖于:QtSql4.dll,QtGui4.dll,QtCore4.dll,msvcr80.dll以及KERNEL32.DLL这几个库。其中最后一个是system的,我们不用去管,剩下的这几个显然都需要拷贝到exe同目录下。尤其是msvcr80.dll,我在我电脑上搜了一下:有多大10几个同名的该文件,所以拷贝哪个是很重要的,此时我们只需要在dependency walker查看这个dll的属性,然后去对应目录底下拷贝就行了。所以:第一步就是把这些依赖库拷贝到exe同目录下。(千万不要拷贝错误,尤其是不同的版本)。
2、做完1之后再次运行,提示:找不到驱动。 问了一下别人,告之需如下做:
(1)首先在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。
(2)而后在main.cpp中加上如下两句:
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ "plugins"); qApp.addLibraryPath(strLibPath);
做完这两部之后:按理应该没问题了,但是run一下发现:还是提示驱动找不到。
3、再后来,上网查了一下各种说法,发现几种可能性:①你要发布的电脑上没有安装mysql ②mysql版本不对。 我就纳闷了:找不到驱动与装没装mysql有什么关系?毕竟:驱动是我自己编译的,又不是mysql提供的。 问了下别人,别人也这么认为。然后就卡在这里了。 我不死心,继续在网上寻找各种可能的答案并进行尝试。最后找了问题,原来:我们需要把mysql提供的:libmySQL.dll这个库拷贝到exe同目录下(该文件在我自己电脑上处于:C:\Program Files\MySQL\MySQL Server 5.5\bin文件夹下)。如此之后再来运行就不再报:找不到驱动这个错误啦!(此时报的是:连接不到某个指定的数据库,那是因为我还没有把数据库文件导入到目标机器上来)。
总结:在其他pc上发布的时候需要做如下工作:
1、使用depenency walker查看依赖库,全部拷贝到exe同文件夹下。
2、(1)在exe同目录下建一个plugins\sqldrivers这样的二级目录,而后将前边编译生成的qt-mysql驱动:qsqlmysql4.dll放到里边。
(2)而后在main.cpp中加上如下两句:
QString strLibPath(QDir::toNativeSeparators(QApplication::applicationDirPath())+QDir::separator()+ "plugins"); qApp.addLibraryPath(strLibPath);
3、将mysql/bin目录下的libmySQL.dll拷贝到exe同目录下。
做完以上几步之后就OK了。
至于最后所报的连接不到指定的数据库,原因是这样的:
在开发的电脑上:你建了一个mysql数据库,那么我们需要把这个数据库文件也拷贝到目标机器上,并在目标机器上装mysql,而后将这个数据库文件导入进去。 导入之后你会发现:各字段的数据有可能出现乱码,这是由于各个字段的编码格式在开发机器和目标机器上不一致 导致的! 你需要按照开发机器上的数据库文件配置来重新设置一下目标机器的各个字段编码格式。
而在目标机器上导入数据库文件的方法是:(以建立的数据路名为buaa.sql为例)
1、在目标机器上装mysql
2、命令行运行mysql,进入后执行命令:create database buaa;
3、导入buaa.sql到刚创建的buaa数据库中。(我用的mysql-front这个数据库图形化工具)。
测试: Qt4.5.0commercial + vc2005 express + mysql5.5 +mysql-front +windows xp
(网上很多人说:找不到驱动是因为目标机器上没有安装vc运行时库的原因,但是我这里没有遇到这个问题:我测试的电脑没有任何vc环境,没有任何qt环境,也没有安装windows sdk。 但是如果大家按照我上边的方法测试发现有问题时:可以考虑在目标机器上安装vc运行时库试一下。它分sp1版本和 非sp1版本,你对应主机的vc版本选择一个安装就是。)
小结:关于如何解决Qt Mysql中无法加载驱动问题,介绍完了,好像出现此问题的友们还是有很多滴,希望本文对你有所帮助。
❿ Qt 访问mysql
mysql.h确实不是qt的一部分,它是mysql的一部分,你应该是用qt的二进制安装包安装的,不是从源码编译的吧。在linux下你需要安装libmysqlclient,在windows下你安装mysql时就包含了这个文件,你需要的是在gcc的编译参数中增加"-I<mysql.h所在目录>",如果是qt,那么在。pro未见中增加一行INCLUDEPATH += <mysql.h所在目录>