Qt SQL 学习笔记二:qt建立数据库,创建和操纵表
qt工程配置
Qt5中使用sql相關(guān)功能,需要在工程文件導(dǎo)入sql模塊:
QT += sql頭文件引入SQL模塊類定義
#include <QSqlQuery> #include <QSqlDatabase> #include <QSqlError>創(chuàng)建數(shù)據(jù)庫(kù)
qDebug()<<QSqlDatabase::drivers(); QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("testDB.db"); db.setUserName("root"); db.setPassword("123456");上述第一行代碼查看支持的數(shù)據(jù)庫(kù)類型如下:
("QSQLITE", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
后面幾行表示創(chuàng)建一個(gè)名為testDB.db的SQLITE數(shù)據(jù)庫(kù),如果這個(gè)數(shù)據(jù)庫(kù)不存在,則創(chuàng)建;數(shù)據(jù)庫(kù)存在,后續(xù)的數(shù)據(jù)庫(kù)操作在已有的數(shù)據(jù)庫(kù)上進(jìn)行。并設(shè)置數(shù)據(jù)庫(kù)用戶名為“root”,密碼“123456”。
創(chuàng)建表
- 新表的名字,在關(guān)鍵字CREATE TABLE之后給出;
- 新表中,列的名字和定義用逗號(hào)隔開。
下面代碼用來實(shí)現(xiàn)創(chuàng)建名為Customers的表。
bool isOk = db.open();if(!isOk){qDebug()<<"error info :"<<db.lastError();}else{QSqlQuery query;QString creatTableStr = "CREATE TABLE Customers \( \cust_id char(10) NOT NULL , \cust_name char(50) NOT NULL , \cust_address char(50) NULL , \cust_city char(50) NULL , \cust_state char(5) NULL , \cust_zip char(10) NULL , \cust_country char(50) NULL , \cust_contact char(50) NULL , \cust_email char(255) NULL \);";query.prepare(creatTableStr);if(!query.exec()){qDebug()<<"query error :"<<query.lastError();}else{qDebug()<<"creat table success!";}}db.close();操作數(shù)據(jù)庫(kù)之前,先要打開數(shù)據(jù)庫(kù),打開成功后才能執(zhí)行相關(guān)數(shù)據(jù)庫(kù)操作,完成后,最好關(guān)閉數(shù)據(jù)庫(kù)。
操作數(shù)據(jù)庫(kù)需要用到QSqlQuery類,操作前必須定義一個(gè)對(duì)象。對(duì)數(shù)據(jù)庫(kù)的操作,都是通過執(zhí)行SQLite的語句完成的。
創(chuàng)建表格語句:CREATE TABLE <table_name> (f1 type1, f2 type2,…);
從上述代碼可以看到,表明Customers緊跟在關(guān)鍵字CREATE TABLE之后。表的定義在圓括號(hào)之中,各列之間用逗號(hào)分隔,總共有9列。每個(gè)表列有NULL和NOT NULL兩種模式。允許NULL值的列允許插入時(shí)不給出該列的值,反之,NOT NULL列必須有值。注意不要把NULL值和空字符串相混淆,空字符串是一個(gè)有效的值。
最后,用DB Browser for SQLite工具打開創(chuàng)建的testDB.db數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)表的結(jié)構(gòu)如下圖:
?
總結(jié)
以上是生活随笔為你收集整理的Qt SQL 学习笔记二:qt建立数据库,创建和操纵表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux基于域的虚拟目录,RHELAS
- 下一篇: ML部分笔记