2016-07-14 3 views
0

Я использую C# с библиотекой System.Data.SQLite, и я получил ошибку несоответствия внешнего ключа. я создал три таблицы:Почему в этом коде есть ошибка несоответствия внешнего ключа?

Com.CommandText = @"create table Projekt ([ProjectID] Integer NOT NULL Primary key, [Projektname] varchar(360),[ProjektEd] DATETIME, [ProjektLSD] Datetime, [ProjektLD] Datetime);"; 
Com.ExecuteNonQuery(); 
Com.CommandText= "create table Template ([TemplateID] Integer NOT NULL Primary key,[Templatename] varchar(360),[TemplateEd] Datetime, [TemplateLSD] Datetime,[TemplateLD] Datetime);"; 
Com.ExecuteNonQuery(); 
Com.CommandText = "create table Messung ([MessungID] Integer Not Null Primary Key, [Messungname] varchar(360), [MessungEd] Datetime, [MessungLSD] Datetime, [MessungLD] Datetime, [ProjektID] Integer, [TemplateID] Integer,FOREIGN KEY(ProjektID) REFERENCES Projekt(ProjektID), Foreign Key (TemplateID) References Template(TemplateID)); "; 
Com.ExecuteNonQuery(); 

После этого я вставить это создает свою первую запись в таблице «Projekt»:

Insert into projekt (Projektname, ProjektEd,ProjektLSD, ProjektLD) values ('Messung_Win_3', '2016-06-16 14:47:00','2016-06-27 14:47:00', '2016-07-14 11:12:00'); 

в то время как это создает мой четвертый вход (у меня есть еще три вставки перед это один) в таблице «Шаблон»:

Insert into Template (Templatename, TemplateEd, TemplateLSD, TemplateLD) values('Messung_Win_3', '2016-05-19 15:13:00','2016-06-27 14:47:00', '2016-07-14 11:12:00'); 

Так что теперь на вопрос: Почему эта команда имеет foreig n ошибка несоответствия ключа?

Com.CommandText = "Insert into Messung (Messungname, MessungEd, ProjektID, TemplateID) values ('Board2ROI3','2016-06-16 14:47:00',1,4);"; 

Я тестирую его через SQLFiddle с SQLite (SQL.js). Ссылка находится здесь: http://sqlfiddle.com/

Там он работал отлично, но на C# он получает эту ошибку.

Я надеюсь, что вы можете помочь мне

ответ

0

Вы видите ваш FK ProjectID неправильно

Com.CommandText = @"create table Projekt ([**ProjectID**] Integer NOT NULL Primary key, [Projektname] varchar(360),[ProjektEd] DATETIME, [ProjektLSD] Datetime, [ProjektLD] Datetime);"; 


Com.CommandText = "create table Messung ([MessungID] Integer Not Null Primary Key, [Messungname] varchar(360), [MessungEd] Datetime, [MessungLSD] Datetime, [MessungLD] Datetime, [ProjektID] Integer, [TemplateID] Integer,FOREIGN KEY(ProjektID) REFERENCES Projekt(**ProjektID**), Foreign Key (TemplateID) References Template(TemplateID)); "; 
+0

Бог, черт побери, такая глупая ошибка. Огромное спасибо! – Evosoul