#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实现级联删除
最新推荐文章于 2023-11-14 18:14:56 发布