Qt SQlite实现级联删除

来源:互联网 发布:php将数组转换成字符串 编辑:程序博客网 时间:2024/04/28 12:57
#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;}

原创粉丝点击