Asp.net asp SQL语句将多行记录插入表中
我正试图创建一个考勤表来记录学生参加的活动。创建新活动时会触发以下代码。创建新活动时,我希望将所有学生记录插入考勤表,并将默认的Attention属性标记为false。(出席属性用于标记出席,设置为0) 问题是无法填充考勤表。代码将在以下行停止继续:numoRecordsAffected=command.ExecuteNonQuery() 我正在尝试从学生表中获取所有sigstudentid。我不知道在这种情况下是否推荐使用foreach(),但如果有任何帮助,我们将不胜感激 我需要一个解决方案Asp.net asp SQL语句将多行记录插入表中,asp.net,sql,sql-server,insert,rows,Asp.net,Sql,Sql Server,Insert,Rows,我正试图创建一个考勤表来记录学生参加的活动。创建新活动时会触发以下代码。创建新活动时,我希望将所有学生记录插入考勤表,并将默认的Attention属性标记为false。(出席属性用于标记出席,设置为0) 问题是无法填充考勤表。代码将在以下行停止继续:numoRecordsAffected=command.ExecuteNonQuery() 我正在尝试从学生表中获取所有sigstudentid。我不知道在这种情况下是否推荐使用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;
}
当您放置代码时,
numofrecordsafected=command.ExecuteNonQuery()代码>在您的foreach
外侧。
它只执行一次。由于此代码是向表中插入数据的实际语句,因此它将只插入一行
试着把你的代码
numofrecordsafected=command.ExecuteNonQuery()代码>
在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 = "";
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;
}
通过使用循环,您可能会使其变得有点过于复杂,您可以执行以下操作:
"INSERT INTO Attendance(SIGStudentID, ActivityId, Attendance) select SIGStudentID, " + num + " as ActivityId, 0 as Attendance from Student;"
参考:
您使用的是哪个版本的SQL Server?我使用的是Microsoft SQL Server Management Studio 2012,这不是ASP经典版(仅适用于VBA代码)-我想您的意思是ASP.net
而不是考勤表无法从上述代码接收任何记录。有什么我应该注意的吗?我已经在我的答案中修改了你的代码,看看它是否有效。谢谢,接受我的答案并投票表示感谢。需要15个声誉。我会建立好的,但因为这是你的问题,你可以接受答案,即使你没有声誉。