我在使用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 tblUser
中UserID = 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();
这仍然是错的吗?我仍然可以将数据插入我的数据库。
答案 0 :(得分:1)
外键约束作为SQLite的可选功能添加,因此您需要启用它们。
首次打开连接时,执行SQL命令:
PRAGMA foreign_keys = ON;
它看起来像。