SQLite在Qt环境里如何实现级联,级联更新,级联删除

QQ_278397935 2015-07-03 04:44:26
各位大牛,你们好。SQLite在Qt环境里如何实现级联,级联更新,级联删除等等。我找了例子试了几次,都不行。外键 啥的 都注意了。begin end 就没看清楚~~~query。exec(“~~~~~~~~~·”)这样来的。求指教。
...全文
449 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
QQ_278397935 2015-07-08
  • 打赏
  • 举报
回复
搞定了。 上代码:
#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;
}
jiqiang01234 2015-07-07
  • 打赏
  • 举报
回复
引用 3 楼 tadpole_java 的回复:
[quote=引用 2 楼 jiqiang01234 的回复:] 可用触发器实现
能 给个Qt 下的例子不~?· [/quote] 和Qt没关系,在sqlite中实现触发器
QQ_278397935 2015-07-07
  • 打赏
  • 举报
回复
引用 1 楼 bhybhybhy2 的回复:
sqlite有着功能?
sqlite是有这个功能的。是我自己水平有限,没能在qt上实现。
QQ_278397935 2015-07-07
  • 打赏
  • 举报
回复
引用 2 楼 jiqiang01234 的回复:
可用触发器实现
能 给个Qt 下的例子不~?·
QQ_278397935 2015-07-07
  • 打赏
  • 举报
回复
引用 5 楼 jiqiang01234 的回复:
[quote=引用 3 楼 tadpole_java 的回复:] [quote=引用 2 楼 jiqiang01234 的回复:] 可用触发器实现
能 给个Qt 下的例子不~?· [/quote] 和Qt没关系,在sqlite中实现触发器[/quote全部家当都给你了(100分)。 能花几分钟给个例子不?
QQ_278397935 2015-07-07
  • 打赏
  • 举报
回复
找例子做 就是没成功过。 要是有例子就好了。
  • 打赏
  • 举报
回复
sqlite有着功能?
jiqiang01234 2015-07-04
  • 打赏
  • 举报
回复
可用触发器实现

16,831

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧