#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QSqlDatabase"
#include "qdebug.h"
#include "QSqlQuery"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("Test.db");
if(!db.open())
{
qDebug()<<"open false!";
}
QSqlQuery query(db);
if(!query.exec("PRAGMA foreign_keys = ON"))//使外鍵功能生效
{
qDebug()<<"No Effect!";
}
// -- 創建測試主表. ID 是主鍵.
query.exec("CREATE TABLE test_main ("
"id INT NOT null,"
"value varchar(10),"
"PRIMARY key(id)"
")");
//-- 插入測試主表數據.
query.exec("INSERT INTO test_main(id, value) VALUES (1, 'ONE')");
query.exec("INSERT INTO test_main(id, value) VALUES (2, 'TWO')");
//-- 創建測試子表. ( 注意, 這裏要有一個 ON DELETE cascade )
query.exec("CREATE TABLE test_sub ("
"id INT PRIMARY key,"
"main_id INT REFERENCES test_main(id) ON DELETE cascade,"
"value varchar(10)"
")");
//-- 插入測試子表數據.
query.exec("INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE')");
query.exec("INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO')");
//-- 測試刪除主表.
query.exec("DELETE FROM test_main WHERE id = 1");
}
MainWindow::~MainWindow()
{
delete ui;
}
Qt SQlite實現級聯刪除
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.