2017-03-02 44 views
0

當用戶將一個學校類添加到系統中時,他們選擇該類的開始日期和結束日期。我已經計算出如何計算這個天數,並將其存儲在'TotalDayNumber'列中的數據庫表'Class'中。根據用戶值創建多個INSERT語句

目前當用戶添加一個類時,它只是向數據庫中插入一行,但我想爲每個單獨的一天添加相同數量的行'TotalDayNumber'。

例如,如果開始日期是01/03/2017 - 15/03/17 - 總天數爲14,所以我想創建14個總行來表示每一天。 '以下是我的INSERT查詢。我相信我需要一個IF聲明,但我不知道如何開始它。

protected void insertbutton_Click(object sender, EventArgs e) 
    { 

     int? recurrencedata = Convert.ToInt32(ddlRecurrence.Text); 
     if (recurrencedata == 1) 
     { 
      int moduledata = Convert.ToInt32(ddlModule.Text); 
      DateTime startdatedata = Convert.ToDateTime(txtstartdate.Text); 
      DateTime enddatedata = Convert.ToDateTime(txtenddate.Text); 
      int classtypedata = Convert.ToInt32(ddlClassType.Text); 
      int roomcodedata = Convert.ToInt32(ddlRoomCode.Text); 
      int starttimedata = Convert.ToInt32(ddlStartClassTime.Text); 
      int endtimedata = Convert.ToInt32(ddlEndClassTime.Text); 

      startdatedata = DateTime.Parse(txtstartdate.Text).Date; 
      enddatedata = DateTime.Parse(txtenddate.Text).Date; 

      TimeSpan totaldays = enddatedata - startdatedata; 

      // This is rounding the TimeSpan to the day value only 
      string totalday = ((int)Math.Round(totaldays.TotalDays, MidpointRounding.AwayFromZero)).ToString(); 

      string DefaultConnection = WebConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString; 
      SqlConnection myConnection = new SqlConnection(DefaultConnection); 

      myConnection.Open(); 

      string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId, TotalDayNumber) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata, @totaldaynumberdata)"; 

      SqlCommand myCommand = new SqlCommand(query, myConnection); 
      myCommand.Parameters.AddWithValue("@moduledata", moduledata); 
      myCommand.Parameters.AddWithValue("@classtypedata", classtypedata); 
      myCommand.Parameters.AddWithValue("@startdatedata", startdatedata); 
      myCommand.Parameters.AddWithValue("@enddatedata", enddatedata); 
      myCommand.Parameters.AddWithValue("@starttimedata", starttimedata); 
      myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata); 
      myCommand.Parameters.AddWithValue("@endtimedata", endtimedata); 
      myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata); 
      myCommand.Parameters.AddWithValue("@totaldaynumberdata", totalday); 
      myCommand.ExecuteNonQuery(); 
      myConnection.Close(); 

      SuccessPanel.Visible = true;  
     } 

}

回答

0

獲得總天數爲int,然後添加插入命令withing for循環如下

// add for loop 
    for(int i =0; i <= totalday; i++) 
    { 
     myConnection.Open(); 

     string query = "INSERT INTO Class (ModuleId, ClassTypeId, ClassScheduleStartTimeId, ClassScheduleEndTimeId, RoomCodeId, StartTime, EndTime, RecurrenceId, TotalDayNumber) VALUES (@moduledata, @classtypedata, @starttimedata, @endtimedata, @roomcodedata, @startdatedata, @enddatedata, @recurrencedata, @totaldaynumberdata)"; 

     SqlCommand myCommand = new SqlCommand(query, myConnection); 
     myCommand.Parameters.AddWithValue("@moduledata", moduledata); 
     myCommand.Parameters.AddWithValue("@classtypedata", classtypedata); 
     myCommand.Parameters.AddWithValue("@startdatedata", startdatedata); 
     myCommand.Parameters.AddWithValue("@enddatedata", enddatedata); 
     myCommand.Parameters.AddWithValue("@starttimedata", starttimedata); 
     myCommand.Parameters.AddWithValue("@roomcodedata", roomcodedata); 
     myCommand.Parameters.AddWithValue("@endtimedata", endtimedata); 
     myCommand.Parameters.AddWithValue("@recurrencedata", recurrencedata); 
     myCommand.Parameters.AddWithValue("@totaldaynumberdata", totalday); 
     myCommand.ExecuteNonQuery(); 
     myConnection.Close(); 
    }