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所在目錄>