gpt4 book ai didi

c# - SQLite 中的外键

转载 作者:行者123 更新时间:2023-12-02 03:26:19 25 4
gpt4 key购买 nike

我在使用 C# 代码和 Visual Studio 或 SQLite Expert 个人创建数据库时使用 SQLite DB,一切正常。当尝试使用 SQLite Expert Personal 将数据添加到数据库时,我的外键约束按预期工作,但是当我尝试使用 C# 插入数据时,我可以添加违反外键约束的数据。谁能告诉我为什么?

这是我的 C# 代码:

SQLiteCommand cmd = new SQLiteCommand("INSERT INTO tblLicenseInfo 
(UserID, MachineID, ExpirationDate, DateOfChange, LicenseKey)
VALUES (2, 1, '2014-04-03 12:15:00', '2014-04-03 12:15:00', '123123erer')", SqLite);

tblUser 中没有 UserID = 2 的条目,也没有 MachineID = 1 的条目。当我在 Expert Personal 中尝试相同的 sql 语句时,它显示错误消息,但在 Visual studio 中没有抛出异常 - 数据只是插入到我的表中(当我使用 Expert Personal 打开数据库时,我可以看到该条目)。

非常感谢。

编辑:

我现在添加了一些代码,所以它看起来像这样:

SQLiteCommand foo = new SQLiteCommand("PRAGMA foreign_keys = ON;", SqLite);
SQLiteCommand cmd = new SQLiteCommand("INSERT INTO tblLicenseInfo
(UserID, MachineID, ExpirationDate, DateOfChange, LicenseKey)
VALUES (2, 1, '2014-04-03 12:15:00', '2014-04-03 12:15:00', '123123erer')", SqLite);

SqLite.Open();
foo.ExecuteNonQuery();
cmd.ExecuteNonQuery();
SqLite.Close();

这还是错的吗?我仍然可以将数据插入我的数据库。

最佳答案

外键约束已作为可选功能添加到 SQLite,因此您需要启用它们。

首次打开连接时执行 SQL 命令:

PRAGMA foreign_keys = ON;

它的作用正如它看起来的那样。

关于c# - SQLite 中的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23427629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com