天天看點

lesson14-資料庫結構設計

一、概述

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();