如何一次在多个表中插入数据?

时间:2013-12-30 18:20:19

标签: asp.net database ms-access database-design relational-database

我的MS Access数据库中有以下表格。 个人,合作伙伴,ContactDetails,NativeAddress bla bla bal。我在Visual Studio 2012中为上面的表创建了一个向导。屏幕截图如下。现在,当用户按下提交按钮时,我想在所有表中一次提交所有数据。那么我现在应该使用什么语法。请指导。

我的代码是这样的。它不完整,刚刚开始我的剧本。所以请不要误会我的意思。

 protected void dataWizard_FinishButtonClick(object sender, WizardNavigationEventArgs e)
{
    OleDbConnection con = new OleDbConnection();
    con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\micronets\jobwork-2013\arunthathiyar-sangham\arunthathiyar-web-application\App_Data\arunthathiyar-db.accdb";

    string personalDetails = "INSERT INTO PersonalDetails(FirstName, MiddleName, LastName, Sex, Age, DateOfBirth, PlaceOfBirth, EducationalQualification, EmploymentStatus, Profession, PhysicalStatus, BloodGroup) VALUES (@fnPD, @mmPD, @lnPD, @sexPD, @agePD, @dobPD, @pobPD, @eqPD, @esPD, @profPD, @phyicPD, @bgPD)";
    string familyDetails = "INSERT INTO FamilyDetails(Relationship, FullName, Status, BloodGroup, EducationalQualification, Profession, EmploymentStatus) VALUES(@relFD, @fnFD, @statusFD, @bgFD, @eqFD, @profFD, @esFD)";
    string contactDetails = "INSERT INTO ContactDetails(FlatBuildingStreet, Landmark, Area, City, Pincode, State, Country, Mobile, Telephone, Email) VALUES(@fbsCD, @landCD, @areaCD, @cityCD, @pinCD, @stateCD, @countryCD, @mobCD, @telCD, @emailCD)";

    try
    {
        con.Open();
        txtMemAmountReceived.Text = txtPDFirstName.Text;
    }
    catch
    {
        txtMemAmountReceived.Text = "Sorry";
    }

2 个答案:

答案 0 :(得分:1)

你正朝着正确的方向前进。以下是您需要做的事情:

创建OleDbCommand对象
您有一个连接,现在需要创建和Command对象,可以存储SQL文本并对数据库执行命令。像这样:

OleDbCommand cmd = new OleDbCommand(personalDetails, con);

打开,执行,关闭
然后,在try块中,您要打开连接,执行查询并关闭连接:

cmd.Connection.Open();
cmd.ExecuteNonQuery();
cmd.Connection.Close();

冲洗并重复
就执行所有三个查询而言,您可以从那里获取它。您只需要使用要执行的其他查询的文本更新cmd.CommandText属性,然后再次调用ExecuteNonQuery

答案 1 :(得分:0)

您可以将所有查询字符串连接成一个用分号分隔的字符串(;)因此,一个大字符串将被发送到服务器并且每个查询都将被处理,然后您只需要与数据库建立一个连接

string myQuery = personalDetails+ "; " + familyDetails + "; " + contactDetails

但是,我只需要进行3个独立的连接,这样就可以更轻松地管理所有参数。如果您必须返回并更改查询或参数,那将是一团糟。