【问题标题】:How to add PRAGMA foreign_keys = ON for SQLite on VB Net?如何在 VB Net 上为 SQLite 添加 PRAGMA foreign_keys = ON?
【发布时间】:2016-09-05 10:52:51
【问题描述】:

使用 SQlite 在 VisualStudio 上工作

我用

创建我的表
Dim mainTable = "CREATE TABLE IF NOT EXISTS users (userID INTEGER PRIMARY KEY, type VARCHAR(20))"

Dim tableA = "CREATE TABLE IF NOT EXISTS tableA (partA VARCHAR(20), userID INTEGER, FOREIGN KEY(user) REFERENCES users(userID) ON DELETE CASCADE)"

在我想在级联上删除的子节点上,我知道 userIDtoDelete 的值(之前在 DataGrid 上选择)并且我有这个连接

Dim connDeleteUser = New SQLiteConnection("Data Source=MyDataBase.sqlite;Version=3")

    Try
        Using (connDeleteUser)

            connDeleteUser.Open()


            Dim sql = "DELETE FROM actos WHERE userID = ?"

            Dim connDeleteUser As SQLiteCommand = New SQLiteCommand(sql, connDeleteUser)

            connDeleteUser.CommandText = sql

            connDeleteUser.Parameters.AddWithValue("@userID", userIDtoDelete)

            connDeleteUser.ExecuteNonQuery()

            'I don´t know if this line is neccesary
            connDeleteUser.Close()


        End Using

    Catch ex As Exception
        MsgBox(ex.ToString())
    End Try

我知道我需要声明 PRAGMA foreign_keys = ON 但我不知道如何

我尝试过这样的事情:

PRAGMA foreign_keys = ON

connDeleteUser.PrepareRetries(@"PRAGMA foreign_keys = ON)

connDeleteUser.CommandText = "PRAGMA foreign_keys = ON"

Dim sql = "DELETE FROM users WHERE userID = ? PRAGMA foreign_keys = ON"

【问题讨论】:

    标签: vb.net sqlite


    【解决方案1】:

    PRAGMA 是一条 SQL 语句;它必须像任何其他 SQL 语句一样执行:

    someCommand.CommandText = "PRAGMA foreign_keys = ON"
    someCommand.ExecuteNonQuery
    

    无论如何,您只需将Foreign Keys = True 选项添加到连接字符串即可。

    【讨论】:

    • 起来!!!外键 = True 是最简单的解决方案!!!谢谢。我知道在创建表、添加和删除数据时需要使用此设置。我认为当我只搜索数据库时没有必要,但无论如何我都会在任何连接上使用。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-14
    • 2012-11-22
    • 2013-01-30
    • 1970-01-01
    • 2021-01-30
    • 1970-01-01
    • 2018-04-13
    相关资源
    最近更新 更多