C# 如何插入数据?
如何使用C#?将数据插入到Access数据库的多个表中,这些表具有内部联接,我不知道它是否在Access中工作,但您可以尝试:C# 如何插入数据?,c#,ms-access,ado.net,C#,Ms Access,Ado.net,如何使用C#?将数据插入到Access数据库的多个表中,这些表具有内部联接,我不知道它是否在Access中工作,但您可以尝试: INSERT INTO table (col1, col2, col3) SELECT t1.col1, t1.col2, t2.col3 FROM table1 t1 INNER JOIN table2 t2 ON t1.Id = t2.Id 如果需要在不同的表上执行此操作,执行不同的插入,JET Engine不允许在单个语句上执行多个查询,根据我假设join指的是
INSERT INTO table (col1, col2, col3)
SELECT t1.col1, t1.col2, t2.col3
FROM table1 t1
INNER JOIN table2 t2 ON t1.Id = t2.Id
如果需要在不同的表上执行此操作,执行不同的插入,JET Engine不允许在单个语句上执行多个查询,根据我假设join指的是与另一个表的外键的关系。联接指的是查询而不是表
您可以简单地执行多个插入,根据需要为每个表插入一个,将记录添加到父表,获取刚刚添加的新记录的键,然后使用该ID插入任何子表,该ID将是子表中的外键。根据我的经验,没有标准方法,但有解决方法,但这些方法取决于表/数据库的结构 我不确定访问支持触发器、SP和功能。我认为没有,所以如果这是真的,那么下面的解决方法是无效的
PS:emp、empContact和empAdress的示例可能不是一个非常聪明的示例,但我希望它确实传达了信息。我同意这个问题很模糊,但暗示了ACE/Jet引擎经常被问到的问题,“如果我能在两个表之间创建
内部联接
,我能用一条SQL语句将插入到两个表中吗?”通常紧跟在限定符之后,“…如果表之间存在外键
(访问=与引用完整性的关系),则引用表中生成的标识号
/AutoNumber能否自动添加到引用表中?”
这些问题的答案是肯定的:创建一个带有内部联接的视图
(或等效项),包括标识
列和引用标识
列的列,然后插入视图
中,忽略标识
列及其引用列
下面是一个ANSI-92查询模式语法的快速示例(我假设您使用的是OLE DB):
如果您能提供一个表结构的示例,那么提供一个答案可能会更容易。这肯定需要澄清,才有可能得到一个有用的答案。我认为这有点推动了它。有很多有用的答案。为什么你不先找出一些关于Jet的信息,然后再发布一个毫无价值的答案呢?Jet没有触发器,没有存储过程(在任何实际意义上,也就是说,其中包含过程逻辑)。如果您阅读了我的回答,我已经提到“我不确定Access是否支持触发器、SP和函数。我相信没有。因此,如果是真的,则以下解决方法无效。”如果您不确定,请检查!比完成你剩下的答案要快。
CREATE TABLE TableA
(
ID IDENTITY NOT NULL UNIQUE,
a_col INTEGER NOT NULL
)
;
CREATE TABLE TableB
(
ID INTEGER NOT NULL UNIQUE
REFERENCES TableA (ID),
b_col INTEGER NOT NULL
)
;
CREATE VIEW TestAB
(
a_ID, a_col,
b_ID, b_col
)
AS
SELECT A1.ID, A1.a_col,
B1.ID, B1.b_col
FROM TableA AS A1
INNER JOIN TableB AS B1
ON A1.ID = B1.ID
;
INSERT INTO TestAB (a_col, b_col) VALUES (55, 99)
;