一、概述
1、資料庫概述
資料庫也是應用程式的重要部分,一個完整的應用程式幾乎都包含資料庫
目前主流的資料庫有DB2、MYSQL、OCI、ODBC、SQLITE、TDS、Oracle
Sqlite是一款輕型的資料庫,它的設計目标是嵌入式,友善我們使用
2、資料庫操作語句
下載下傳安裝資料庫
tar -xzvf
./configure
make
make install
SELECT * FROM menu WHERE id>20
INSERT INTO menu VALUES(102, HELLO)
DELETE FROM menu WHERE name="wj"
UPDATE menu SET name="weijie"
二、QSql
1、連接配接資料庫
Qt中使用資料庫子產品,首先要在工程檔案.pro中添加;
QT+=sql
使用QSqlDatabase類的addDatabase方法來連接配接資料庫
QSqlDatabase db = QSqlDatabase::addDatabase("sqlite3", "wj");
第一個參數是驅動名,也就是我們的資料庫類型;第二個參數是連接配接名
//設定資料庫名
db.setDatabaseName("wj78080458");
//設定登入名和密碼
db.setUserName("admin");
db.setPassword("123456");
//打開資料庫
db.open();
2、操作
在QSql中的QSqlQuery類提供了一個執行sql語句的接口
QSqlQuery query;
query.exec(sql語句);
當執行完exec語句後,就會傳回結果。當執行完查詢語句時,記錄會傳回到第一條的前面,使用next函數可以移動記錄指針,第一次調用的時候記錄會移動到第一條,以後每次調用都會向後移動一步。
query.next();
使用value(int)函數可以取出每個字段的資訊,它會傳回一個QVariant類型的資料
可以使用isActive函數來檢測執行的錯誤
if(!query.isActive())
qDebug()
3、使用資料庫模型
Qt提供了3個通路資料庫的模型類
QSqlQueryModel基于任意sql語句的隻讀模型
QSqlTableModel基于表的讀寫模型
QSqlRelationalTableModel增加外鍵支援
QSqlQueryModel model;
model.setQuery("sql語句");
int num = model.record(2).value(No);
int num = model.data(model.index(2,4));
三、執行個體
connect.h
點選(此處)折疊或打開
#ifndef CONNECTION_H
#define CONNECTION_H
#include QtSql>
#include QSqlDatabase>
static bool createConnection()
{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("wj78080458");
if(!db.open())
return false;
QSqlQuery query;
query.exec("create table person(id int primary key, firstname varchar(20), lastname varchar(20))");
query.exec("insert into person values(101, 'wj', 'weijie')");
query.exec("insert into person values(102, 'dd', 'dddddd')");
query.exec("insert into person values(103, 'tl', 'tangliang')");
return true;
}
#endif
main.cpp
#include QCoreApplication>
int main(int argc, char *argv[])
QCoreApplication app(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE","wj");
db.setDatabaseName("12345678");
db.setUserName("admin");
db.setPassword("admin");
qDebug()"open error";
QSqlQuery query(db);
query.exec("create table person(id int primary key, name varchar(30), sex varchar(8))");
query.exec("insert into person values(101, 'weijie', 'man')");
query.exec("insert into person values(103, 'wj', 'woman')");
query.exec("select * from person");
query.first();
qDebug()query.value(0);
qDebug()query.value(1);
qDebug()query.value(2);
query.next();
return 0;
.lasterror().text();