2014-02-05 181 views
0

我試圖創建一個考勤表來記錄學生參與的活動。下面的代碼在創建新活動時觸發。創建新活動時,我想將所有學生記錄插入考勤表並將默認的考勤屬性標記爲false。 (出席屬性爲標記出勤,設爲0)asp SQL語句將多行記錄插入到表中

問題是出席表不能填充。代碼將停止在該行繼續:numofRecordsAffected = command.ExecuteNonQuery();

我想從學生表中獲取所有sigstudentid(s)。我不知道在這種情況下是否推薦使用foreach(),但任何幫助將不勝感激。

我需要一個解決方案!

public int InsertAttendance(int num) 
     { 
     SqlDataAdapter adapter = new SqlDataAdapter(); 
     SqlCommand command = new SqlCommand(); 
     SqlConnection connect = new SqlConnection(); 
     DataSet dataset = new DataSet(); 
     String sqlText = "SELECT * FROM Student"; 
     connect.ConnectionString = "Data Source=TECKISTTLE; Initial Catalog=Assignment; Integrated Security=True"; 
     command.Connection = connect; 
     command.CommandText = sqlText; 

     int numofRecordsAffected = 0; 

     adapter.SelectCommand = command; 
     connect.Open(); 
     adapter.Fill(dataset, "StudentData"); 
     sqlText = ""; 

     foreach (DataRow item in dataset.Tables["StudentData"].Rows) 
     { 
      sqlText += " INSERT INTO Attendance(SIGStudentID, ActivityId, Attendance) VALUES(@SIGStudentID,@ActivityId,@Attendance); "; 
      command.Parameters.Clear(); 
      command.Parameters.Add("@SIGStudentID", SqlDbType.Int); 
      command.Parameters["@SIGStudentID"].Value = Convert.ToInt32(item["SIGStudentID"]); 
      command.Parameters.Add("@ActivityId", SqlDbType.Int); 
      command.Parameters["@ActivityId"].Value = num; 
      command.Parameters.Add("@Attendance", SqlDbType.Bit); 
      command.Parameters["@Attendance"].Value = 0; 



     } 
     numofRecordsAffected = command.ExecuteNonQuery(); 

     connect.Close(); 

     return numofRecordsAffected; 
    } 
+0

您正在使用哪個版本的SQL Server? –

+0

我正在使用Microsoft Sql服務器管理工​​作室2012 –

+1

這是**不** ** ASP經典(這將是VBA代碼只) - 我假設你的意思是'asp.net'而不是 –

回答

2

當你把代碼numofRecordsAffected = command.ExecuteNonQuery();出方的foreach。 它只是執行一次。由於這段代碼實際是以INSERT的數據進入表格,所以INSERT只有一個ROW最後一個。

只是儘量把你的代碼

numofRecordsAffected = command.ExecuteNonQuery();

foreach塊內。然後它會每行INSERT

public int InsertAttendance(int num) 
    { 
    SqlDataAdapter adapter = new SqlDataAdapter(); 
    SqlCommand command = new SqlCommand(); 
    SqlConnection connect = new SqlConnection(); 
    DataSet dataset = new DataSet(); 
    String sqlText = "SELECT * FROM Student"; 
    connect.ConnectionString = "Data Source=TECKISTTLE; Initial Catalog=Assignment; Integrated Security=True"; 
    command.Connection = connect; 
    command.CommandText = sqlText; 

    int numofRecordsAffected = 0; 

    adapter.SelectCommand = command; 
    connect.Open(); 
    adapter.Fill(dataset, "StudentData"); 
    sqlText = ""; 
    numofRecordsAffected = 0; 
    sqlText = "INSERT INTO Attendance(SIGStudentID, ActivityId, Attendance) VALUES(@SIGStudentID,@ActivityId,@Attendance); "; 
    command.CommandText = sqlText; 
    foreach (DataRow item in dataset.Tables["StudentData"].Rows) 
    { 
     command.Parameters.Clear(); 
     command.Parameters.AddWithValue("@SIGStudentID", Convert.ToInt32(item["SIGStudentID"]); 
     command.Parameters.AddWithValue("@ActivityId", num); 
     command.Parameters.AddWithValue("@Attendance", 0); 

     numofRecordsAffected += command.ExecuteNonQuery(); 

    } 


    connect.Close(); 

    return numofRecordsAffected; 
} 
+0

考勤表無法接收任何記錄上面的代碼。有什麼我應該注意的嗎? –

+0

我在我的回答中修改了你的代碼,看它是否有效。 – Iqbal

+0

哇。它正在工作。萬分感謝! –

相關問題