C# SQL CE 3.5插入到多个表中
我正在研究SQLCE,我有以下表格 装置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
- DevID-主、bigint、自动增量
- 名称-nvarchar(100)
- 电压-实际值
- SettingID-bigint,FK_可设置
- SettingID-主,bigint
- 设置STR-nvarchar(200)
"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上)插入表时,始终必须先插入父对象,然后再插入子对象。