SQLite中的外键

时间:2014-05-02 11:58:43

标签: c# sqlite

我在使用c#代码创建数据库时使用SQLite数据库,Visual Studio或SQLite Expert个人工作正常。当尝试使用SQLite Expert将数据添加到数据库时,我的外键约束正在按预期工作,但是当我尝试使用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);

the tblUserUserID = 2没有条目,MachineID = 1没有条目。当我在Expert Personal中尝试相同的sql语句时,它会显示错误信息,但是在Visual Studio中没有抛出任何异常 - 数据只是插入到我的表中(当我使用Expert Personal打开数据库时,我可以看到该条目)。 / p> 非常感谢你。

编辑:

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

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();

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

1 个答案:

答案 0 :(得分:1)

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

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

PRAGMA foreign_keys = ON;

它看起来像。