Ⅰ 怎樣在Qt下連接讀寫sqlite資料庫
這里以學生信息的錄入與讀取來作為演示,主要目的是演示資料庫的操作,至於數據的顯示等不在演示範圍內,請您自行研究。
首先,在Qt中建立一個圖形界面的程序項目。
然後,我們在命令行下用sqlite命令創建了資料庫 C:\StudentInfo\sutdentdata.db,並且建立了一個資料庫表student,該表有四個欄位ID、Name、Sex、Age,未向表中添加任何數據。
關於sqlite的簡單使用,可以參考我們的另一篇經驗。
2SQLite的簡單使用方法
在讀寫SQLite資料庫中,我們最主要用到的是QSqlDatabase類及QSqlQuery類,前者負責創建資料庫連接並打開資料庫,後者負責執行查詢操作。實際上前者也可以進行查詢操作並將結果返回給QSqlQuery對象,但是Qt並不建議這么做。
在幹活前,依然是先看看Assitant,這是培養獨立解決問題的一個好習慣。
好,下面給 錄入 按鈕的點擊事件編寫代碼。關於如何給按鈕的某一事件進行編碼,可以參考我們另一篇經驗。
首先在.pro文件中加上sql,然後別忘了#include <QSqlDatabase>以及#include <QSqlQuery>。
好了,下面在錄入按鈕的槽中加入如下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","wconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="insert into student (ID,Name,Sex,Age) values ('"
+ui->le_id->text()+"','"
+ui->le_name->text()+"','"
+ui->le_sex->text()+"',"
+ui->le_age->text()+")";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據寫入成功";
}
上面我們先調用了QSqlDatabase的靜態函數addDatabase創建了一個名為wconntosqlite的連接。然後給其傳遞資料庫名稱。
如果資料庫打開成功,就創建一個關聯的QSqlQuery對象,最後由QSqlQuery來執行插入數據工作。
特別注意:QSqlQuery對象的創建必須在mydb open成功以後才行,否則會出錯。
我們來看看效果如何。
4c++怎麼做界面
我們接著來寫查詢按鈕的代碼,輸入以下代碼:
QSqlDatabase mydb=QSqlDatabase::addDatabase("QSQLITE","rconntosqlite");
mydb.setDatabaseName("c:\\StudentInfo\\studentdata.db");
if(mydb.open())
{
QSqlQuery query(mydb);
QString sqlstr="select * from student";
bool isok=query.exec(sqlstr);
if(isok)
qDebug()<<"數據讀取成功";
query.first();
QString result="學號:"+query.value(0).toString()+" "
+"姓名:"+query.value(1).toString()+" "
+"性別:"+query.value(2).toString()+" "
+"年齡:"+query.value(3).toString();
ui->lbl_query->setText(result);
}
與寫入數據基本差不多,這里需要特別注意的是query.first();。看看Assistant怎麼說的就知道了。原來,query對象在執行完查詢語句後,query的位置被置於一個不可用的位置,如果想從query中獲取數據,需要設置query到一個可用的記錄中才行。方法有好幾種,這里我們用了first()成員函數。
好,來看看運行結果。
可以看到軟體讀取的數據與控制台窗口的數據是一致的。
我們來總結下Qt操作SQLite資料庫的五步走法決:
第一步,建立一個連接:QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");
第二步,關聯資料庫文件:db.setDatabaseName("這里你的資料庫文件路徑")
第三步,打開資料庫:db.open()
第四步,如果資料庫打開成功,就建立一個相關聯的QSqlQuery對象:QSqlQuery query(db)
第五步,執行SQL語句:query.exec("你的SQL語句字元串")
Ⅱ Qt中操作SQLite資料庫
在Qt中,SQLite資料庫因其開源、輕便和無需伺服器等特點,被廣泛應用於小型應用開發。Qt SQL模塊利用驅動程序插件與資料庫API交互,提供多種驅動選擇,如Qt內置的,以及自定義的。使用Qt Creator或VS集成開發環境時,只需在配置文件中添加sql模塊,就能利用其提供的介面操作資料庫。
SQLite是一種進程內資料庫,無需外部伺服器,只需指定資料庫文件名即可。初次使用時,通過創建QSqlDatabase對象,設置驅動和連接名稱,包括資料庫文件路徑,就能實現資料庫的打開和關閉。QSqlQuery類則用於執行SQL語句,如創建表、增刪改查等,同時支持BLOB類型數據的操作。
在處理大量數據或進行並發操作時,Qt提供了事務管理和關閉寫同步選項來優化性能。例如,開啟事務可以確保數據一致性,關閉寫同步則可以提高寫入速度,但需謹慎使用以防止數據丟失。
SQLite的多線程使用需注意,因為默認的文件鎖可能會導致並發問題。為了解決,可能需要對寫操作加鎖,但需權衡可能的阻塞影響。此外,還有可視化工具如SQLite Studio和DB Browser For SQLite,它們提供了直觀的界面來管理和查看SQLite資料庫。
總的來說,Qt中操作SQLite資料庫相對簡單,但處理並發和性能優化時需要適當策略。同時,可視化工具可以輔助開發和維護工作。
Ⅲ Qt-sqlite3資料庫編程實例
本文將介紹在Qt中使用SQLite3資料庫進行學生成績管理的實例。簡化資料庫設計,僅創建一個scores表,包含姓名、學號、年齡、英語成績、數學成績、語文成績和總成績欄位。程序包括一個簡化登錄界面和主成績顯示窗口。整個程序結構模仿書籍管理器,新增登錄功能,簡化table重寫。數據存儲形式選擇文件而非內存,確保數據持久化。以下是部分源碼展示:initdb.h, scorewindow.cpp, scorewindow.h和UI文件。
用戶登錄後,直接在成績窗口顯示相關數據。同時,一個名為test.db的文件在項目目錄下生成,這是用於存儲數據的SQLite3資料庫文件。使用專門的SQLite文件資料庫查看工具,如SQlite Database Browser2.0b1,可直接打開該文件查看資料庫內容。
選擇模仿書籍管理器的設計,因其遵循軟體設計模式,類似樂高積木,每個組件遵循一定的規則和模式,便於組合和適應不同需求。本文旨在熟悉Qt資料庫編程流程,實現基本的數據管理和展示功能。掌握更多組件和模式,將有助於更靈活地應用Qt進行項目開發。
Ⅳ 如何用Qt連接資料庫並導入文件
QT 自帶的資料庫是很好用的。
以下給一些我寫的例子:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); //添加資料庫
db.setDatabaseName("note.db"); //創建一個note.db的文件存儲數據
db.open(); //開啟資料庫
query = QSqlQuery(db); //獲得訪問資料庫的query
query.exec(XXX); //執行指令(XXX為SQL指令)
db.close(); //關閉資料庫
大致只要知道以上例子就OK了。一般而言會將db變數作為全局變數或者數據成員,當需要訪問的時候就獲取一個query就可以了。
另外,要實現所提到的功能,要好好看看QString、QStringList,這兩玩意主要是臨時存放數據、分割數據等作用,另外,要看QFile、QDir、QFileInfo、QTextStream,這四個主要用來讀取文本數據。看看QVector或者QList等來存放讀出來的數據。
另外,要實現這玩意,SQL的語句不要求精通,但是基本的Create、Insert、Select、Delete等操作要准確無誤。否則出錯了QT是看不出來的。QT不會檢測SQL的准確性的。
再另外,在QT的編程中,C++和類都很重要,所以還是得看看。
還有不明白的話歡迎留言
Ⅳ 誰知道怎麼打開ddb後綴的文件啊
.001;002;003... 超星瀏覽器
.!!!...Netants暫存文件,未下載完成
.a4p .a5p 為AUTHERWARE原始檔案,必須安裝AUTHERWARE(軟體)
.aiff ...Windows Media Player
.ani...動畫滑鼠
.ans...記事本
.ape...Monkey s audio;Winamp 2.81以上版本
.arj...壓縮文件 ARJ
.asp...IE或者其他網頁瀏覽器
.au ...Windows Media Player
.avi...Media player;金山影霸(如果不能播放請裝divx插件)
.bik...bink player;RADGameTools
.bin...daemon tool虛擬光碟機
.bmp...畫圖(Windows附件)
.box...Lotus Notes
.c Turbo ...C;記事本
.cab...WinRAR;INSTALL SHELD;Winzip
.caj...Cajviewer
.ccd...daemon tool
.cdr...Corel DRAW;freehand
.chm...Windows幫助文件,可以直接打開
.cmb...ComicGURU
.cpp...C++;記事本
.cue...daemon tool
.cur...靜態滑鼠
.Dat...不確定的打開方式(多種格式的資料檔案都可能)
.db ...SQL資料庫文件
.dbf...Foxbase;Dbase;Visual FoxPro
.ddb...Protel 99 se
.dfi...東方光碟機魔術師
.doc...Microsoft Word
.dwg...AutoCAD
.em...loutlook
.fla...Macromedia Flash 6
.gba...game boy advanced的文件,游戲模擬器
.gho...Norton Ghost
.gif...Acdsee;Internet Explorer
.hlp...Windows幫助文件,可以直接打開
.htm...Internet Explorer
.ico...Windows圖示,AcdSee
.img...daemon tool;Winimg
.inf;.ini...記事本
.iso...UltraISO;WinISO
.jpg;.jpeg ...Acdsee;Internet Explorer;其他圖像瀏覽軟體
.js ...記事本;DreamWeaver
.lrc...記事本
.m3u...Winamp
.mdf...daemon tool;Fantom CD;Alcohol;ms sql server
.mht...Internet Explorer
.mid...Winamp;Windows Media Player及其它播放器
.mov...quick time
.mp3...Winamp;Media player
.mpg;.mpeg... Windows Media Player;金山影霸2003
.nfo...寫字板;DAMN.NFO.Viewer.v2.0
.njx...南極星
.nlc...Book Reader for NLC
.nrg...demon tools(ahead nero記錄軟體的鏡像文件)
.ods...Microsoft Outlook
.opt...Microsoft Developer Studio
.out...Turbo C;記事本
.pcb...protel 99 se
.pdf...AdobeReader
.pdg...超星圖書瀏覽器 ssreader
.php;php3;php4...php腳本文件的副檔名
.pps...powerpoint
.ppt...Microsoft PowerPonit
.pqi...drive image
.prc...prc editor3.1
.prj...3D Studio(DOS)
.prz...Freelance Mobile Screen Show Player
.ps ...GSVIEW
.psd...Adobe Photoshop
.qt... Quick time
.r01,r02....WinRAR(打開其中一個其他的會自動解壓縮)
.rar...WinRAR
.RAW...media player;金山影霸
.rm;.ram;.ra...RealOne Player
.rmvb;.ra...最新的realone player(61上有)
.rpm...Linux安裝程式
.sch...Protel 99 se
.scr...Windows螢幕保護,此環境下可執行文件
.sfv...quicksfv;sfv32w
.srt...Vobsub
.swf...Flash player
.tgz...Winzip
.ti...facdsee
.tiff...Windows映象文件
.tmp...暫存文件,可以刪除
.ttf...Open Type
.txt...記事本
.ur...lInternet Explorer
.vcd...daemon tool
.vip...維普瀏覽器
.vsd...Visio
.wav...Windows Media Player
.wdl...DynaDoc Reader v4.25S中文版
.wpd...Word;frontpage;Quick Viewer
.xls...Microsoft Excel
.zip...Winzip;WinRAR
補充..
*.cda 用cd播放軟體
*.ceb 用方正公司Apabi Reader
*.DCP 用DcpReader
*.dxf,dwg 用AutoCAD
*.ets 用非常好印
*.GB 用ReadBook或電子小說閱讀器
*.gdb 用Interbase Database
*.gs GSView
*.html,htm,asp mht,asp,php 用ie
*.bin, iso,cue,vcd, ccd, img 用winiso瀏覽,deamon運行,用刻錄軟體刻錄
*.mp123,au,aiff等等 用winamp
*.mpeg,avi,wmv,wma,mpa,asf 用windows media player9.0
*.srm 用電子書庫
*.vdx,vsd 用visio
*.wps 用金山wps
*.wdl 用華康瀏覽器