使用C#插入具有多对多关系的MySQL数据库

时间:2011-09-06 10:17:37

标签: c# .net mysql database many-to-many

我创建了以下表格来使用C#和MySQL填充我的数据。

SCIENTIST
-----------------------
scientistID
scientistName
branch
address
phone
fax
url
email

SCIENTISTAREA
------------------------
scientistAreaID
scientistID
areaofscienceID

AREAOFSCIENCE
--------------------
areaofscienceID
areaName

我有一个科学家课程,其中包含科学表格中的所有信息,包括包含科学家所涵盖的每个科学领域的字符串列表。为了在添加查询时更容易,我创建了一个包含每个不同科学领域的字符串列表。我写自己的时候写了这些基本查询。正如你所看到的那样,我已经用@解决了我遇到问题的区域(主要是因为我将使用MySqlParameterCollection.AddWithValue()添加它们):

insert into areaOfscience (
    areaName
) values (
    'Agricultural science'
);

insert into scientistArea (
    scientistID, areaOfscienceID
) values (
    @scientistID, @areaOfscienceID
);

insert into scientists (
    scientistName, branch, address, phone, fax, url, email
) values (
    'A scientists', 'Head Office', '123 Fake St', '0117 38473847', '0117 3746382', 'http://www.google.com', 'me@myhouse.com'
), (
    'B scientists', 'Head Office', '123 Fake St', '0121 38473847', '0121 3746382', 'http://www.google.com', 'me@myhouse.com'
);

目前,我正在用科学的每个可用领域填充科学表区域,现在我正在寻找将科学家添加到我的桌子中。每个科学家都涵盖了许多不同的科学领域,我想将所有这些插入到我的数据库中。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您只需要寻找科学家和区域ID并将其插入scientistArea表。也许像这样的代码可以帮助你,假设没有科学家有重复的名字,也没有区域:

INSERT INTO scientistArea (scientistID, areaOfscienceID)
SELECT scientistID, areaOfscienceID
FROM   scientists,
       areaOfscience
WHERE  scientists.scientistName = 'A scientists' AND
       areaOfscience.areaName = 'Agricultural science'