我正在编写一个与SQL Server CE接口的C#应用程序,但我遇到了CE的许多限制之一。
我的数据库包含表格Customer
,List
和CustomerList
。客户可以订阅许多列表,列表可以有很多客户 - 所以我将customerlist表作为联结表(列CustomerListId
,CustomerId
,ListId
- 这些全部)。
设计是我们有一个主列表,其中列出了每个客户。
因此,在我的代码中,我正在编写一个函数,将所有列出的客户设置为订阅主列表。这是我非常简单的SQL查询:
insert into customerlist (CustomerId, ListId)
values (
(select customerid from customer),
(select 1 from list where ShortDesc='Master'))
这个查询在SQL Server CE中不起作用,我绞尽脑汁试图找到一个不涉及每个逐行代码的痛苦的替代方案。任何想法都将不胜感激。
答案 0 :(得分:1)
为什么不使用:
INSERT INTO customerlist (CustomerId, ListId)
SELECT customerid,1 FROM customer
我错过了什么吗?
祝你好运。答案 1 :(得分:0)
我想出了一个解决方案。
我首先做了一个C#cmd,它获取了主列表的ID。
string sqlGetId = "select listid from list where ShortDesc='Master'";
SqlCeCommand cmdGetMasterId = new SqlCeCommand(sqlGetId, DbConnection.ceConnection);
int key = (int)cmdGetMasterId.ExecuteScalar();
然后我在更简单的第二个查询中使用了该键:
sql2 = "insert into customerlist (CustomerId, ListId) select customerid, " + key + " from customer";
cmd2 = new SqlCeCommand(sql2, DbConnection.ceConnection);
cmd2.ExecuteNonQuery();
我意识到使用参数添加SQL命令总是比连接更好 - 但由于此应用程序的范围,SQL注入不是一个问题。
(抱歉这个简单的问题/答案,但我是新来的^^)