C# SQL CE 3.5插入到多个表中

C# SQL CE 3.5插入到多个表中,c#,database,sql-server-ce,C#,Database,Sql Server Ce,我正在研究SQLCE,我有以下表格 装置 DevID-主、bigint、自动增量 名称-nvarchar(100) 电压-实际值 SettingID-bigint,FK_可设置 另一张表: 背景 SettingID-主,bigint 设置STR-nvarchar(200) 所以第一个表是设备表,另一个是设置表。设备表和设置表具有外键关系 如何插入值SQL CE? 我的Insert语句看起来像 "INSERT INTO DEVICE(Name,Voltage) VALUES('xyz',1

我正在研究SQLCE,我有以下表格

装置

  • DevID-主、bigint、自动增量
  • 名称-nvarchar(100)
  • 电压-实际值
  • SettingID-bigint,FK_可设置
另一张表:

背景

  • SettingID-主,bigint
  • 设置STR-nvarchar(200)
所以第一个表是设备表,另一个是设置表。设备表和设置表具有外键关系

如何插入值SQL CE? 我的Insert语句看起来像

"INSERT INTO DEVICE(Name,Voltage) VALUES('xyz',120)". 
所以我可以在设备表中插入值。但如何在两个表中插入值

我需要更改我的数据库设计吗

更新:

*string connstring = "Data Source=C://Documents//DataBase.sdf";
            SqlCeConnection cnn = new SqlCeConnection(connstring);
            if (cnn.State == ConnectionState.Closed) cnn.Open();

            Random rm = new Random();
            int id = rm.Next();

            string str = "INSERT INTO Settings (SettingID,Settings) VALUES(" + id + ",'" + textBox3.Text + "')";
            SqlCeCommand command = new SqlCeCommand( str, cnn);
            command.ExecuteNonQuery();

            str = "INSERT INTO Device (Mfr,Model,SettingID) VALUES('" + textBox1.Text + "','" + textBox2.Text + "'," + id + ")";
            command.CommandText = str;

            command.ExecuteNonQuery();*
上面的代码可以工作,但看起来不太好。随机数和添加随机数由我自己的代码。 没有其他更好的主意了吗


谢谢你们的建议。至少对我有用

先写设置记录,然后再写设备记录。

先写设置记录,然后再写设备记录。

您确定一个设备只有一个设置条目吗

如果同一设备有多个设置项,则db结构不支持您。您应该从设备表中删除SettingId列,并将DeviceID列添加到设置表中

现在,您可以先将记录插入设备表,然后将记录添加到设置表中,设备id的值作为设备表的最近记录id


如果一个SettingId可以与一个或多个设备关联,那么您的模式将支持它。但在这种情况下,您需要先在设置表中插入记录,然后使用该设置id值在设备表中插入记录。

您确定一个设备只有一个设置条目吗

如果同一设备有多个设置项,则db结构不支持您。您应该从设备表中删除SettingId列,并将DeviceID列添加到设置表中

现在,您可以先将记录插入设备表,然后将记录添加到设置表中,设备id的值作为设备表的最近记录id


如果一个SettingId可以与一个或多个设备关联,那么您的模式将支持它。但在这种情况下,您需要先在设置表中插入记录,然后使用该设置id值在设备表中插入记录。

您要在设置表中插入什么值?@Jason。SettingStr是一对逗号分隔的值,如service | ON、Current | 55、comments | No。Setting ID是设置表的主键。您试图在设置表中插入什么值?@Jason。SettingStr是一对逗号分隔的值,如service | ON、Current | 55、comments | No。设置ID是设置表的主键。那么我将如何维护FK关系?您可以在CE中对外键进行删除级联,以便在删除父记录时自动删除子记录。但是,当您插入带有FKEY的表(在任何数据库上,而不仅仅是CE上)时,始终必须先插入父记录,然后再插入子记录。然后,我将如何维护FK关系?您可以在CE中删除外键上的DELETE CASCADE,以便在删除父记录时自动删除子记录。但是,在使用FKEY(在任何数据库上,而不仅仅是CE上)插入表时,始终必须先插入父对象,然后再插入子对象。