如何处理从多个表中插入数据?

时间:2016-04-29 05:45:30

标签: c# mysql

我有一个名为canvaslocal的表,其中包含字段:canvasID,cnamebonds(char 100),cnamedebs(char 100),cnameshares(char 100)。我已将数据插入此表。参考表是 t_bondridapp:debID(ID),debissuedate(DATETIME),cancode(INT),canname(CHAR 45) t_debtrfapp:recNO(ID),debissuedate(DATETIME),cancode(INT),canname(CHAR 45) share_application:id(ID),debissuedate(DATETIME),cancode(INT),canname(CHAR 45)

我的表单中有一个下拉列表,它选择了名称和两个选择开始和结束日期的文本框。

我必须将t_bondridapp.canname添加到cnamebonds,将t_debtrfapp.canname添加到cnamedebs,将share_application.canname添加到cnameshares,其中canname必须等于dropdownlistvalue,日期必须介于to textboxes日期之间。 我使用过代码:

    string name=Convert.ToString(DropDownList1.SelectedItem.Text);
    DateTime fdate=DateTime.Parse(TextBox1.Text);
    DateTime sdate=dateTime.Parse(TextBox2.Text);
    var dbcon = DBConnection.Instance();
    dbcon.DBName="pnys";
    if(dbcon.IsConnect())
    {
       string q1=@"INSERT INTO canvaslocal (cnamebonds) SELECT          t_bondridapp.canname FROM t_bondridapp WHERE (debissuedate >= @fdate AND debissuedate <= @sdate) AND canname =@name";
       string q2=@"INSERT INTO canvaslocal (cnamedebs) SELECT          t_debtrfapp.canname FROM t_debtrfapp WHERE (debissuedate >= @fdate AND debissuedate <= @sdate) AND canname =@name";
       string q3=@"INSERT INTO canvaslocal (cnameshares) SELECT          share_application.canname FROM share_application WHERE (debissuedate >= @fdate AND debissuedate <= @sdate) AND canname =@name";

       using(var command = new MySqlCommand(q1,dbcon.Connection))
       {
         command.Parameters.Add("@name",MySqlDbType.String).Value =name;
         command.Parameters.Add("@fdate",MySqldbType.DateTime).value =fdate;       
         command.Parameters.Add("@sdate",MySqldbType.DateTime).value =sdate;
         command.ExecuteNonQuery();
       }

       using(var command = new MySqlCommand(q2,dbcon.Connection))
       {
         command.Parameters.Add("@name",MySqlDbType.String).Value =name;
         command.Parameters.Add("@fdate",MySqldbType.DateTime).value =fdate;       
         command.Parameters.Add("@sdate",MySqldbType.DateTime).value =sdate;
         command.ExecuteNonQuery();
       }

       using(var command = new MySqlCommand(q3,dbcon.Connection))
       {
         command.Parameters.Add("@name",MySqlDbType.String).Value =name;
         command.Parameters.Add("@fdate",MySqldbType.DateTime).value =fdate;       
         command.Parameters.Add("@sdate",MySqldbType.DateTime).value =sdate;
         command.ExecuteNonQuery();
       }
   }

是否有其他简单查询可以更有效地传递这些值?而且我还保留了字段cnamebonds,cnamedebs和cnameshares,因为它们可以保存NULL值。 请帮我。

0 个答案:

没有答案