2014-05-02 89 views
1

在使用c#代碼和Visual Studio或SQLite創建我的數據庫時使用SQLite數據庫專家個人一切工作正常。當試圖添加數據到數據庫使用SQLite專家個人我的外鍵約束工作正常,但是當我嘗試插入數據使用C#我可以添加數據違反外鍵約束。有人可以告訴我爲什麼嗎?SQLite中的外鍵

繼承人我的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(); 

這仍然是錯的?我仍然可以將數據插入到我的數據庫中。

回答

1

外鍵約束作爲可選功能添加到SQLite,因此您需要啓用它們。

當你第一次打開的連接執行SQL命令:

PRAGMA foreign_keys = ON; 

該做的事情出現。