【问题标题】:Why is there a foreign key mismatch error in this code?为什么此代码中存在外键不匹配错误?
【发布时间】:2016-07-14 11:38:45
【问题描述】:

我将 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');

那么现在问题来了: 为什么这个命令会出现外键不匹配错误?

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# 中却出现了这个错误。

希望你能帮到我

【问题讨论】:

    标签: c# sqlite system.data.sqlite


    【解决方案1】:

    您的 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)); ";
    

    【讨论】:

    • 该死的,真是个愚蠢的错误。非常感谢!
    猜你喜欢
    • 2019-12-17
    • 2011-07-09
    • 2019-11-17
    • 2014-11-23
    • 2020-08-19
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多