我想使用占位符文本框更新数据库表,但说它是 2 个文本框并且用户编辑其中一个文本框,我确定如何更新表以了解用户编辑了哪个文本框。以及我需要跟踪已编辑的数字。我正在从数据库中读取以前的值,然后在更新时添加该值。但是我有这个,但它没有更新表格。
存储过程
update Student set Course1= @Course1, Course2= @Course2,Course3= @Course3,
lastUser=@user, lastUpdate=@lastupdate, previous_Course1=@previous_Course1,previous_Course2=@previous_Course2,previous_Course3=@previous_Course3 where userNum=@userNum
代码背后
protected void btnUpdate_Click(object sender, EventArgs e)
{
string previousCourse = null;
foreach (TextBox textBox in ContentPlaceHolder1.Controls.OfType<TextBox>())
{
SqlCommand com2 = new SqlCommand("select course1,course2,course3 from Course where loadsheetnum= '" + txtuserNum.Text + "'", connection);
SqlDataReader myReader = null;
myReader = com2.ExecuteReader();
while (myReader.Read())
{
previousCourse = Convert.ToString(myReader["Course1"]);
}
myReader.Close();
}
int maxPossibleTextBoxCount = 3;
int selectedTextBoxCount = ContentPlaceHolder1.Controls.OfType<TextBox>().Count();
int emptyTextBoxCount = maxPossibleTextBoxCount - selectedTextBoxCount;
using (var cmd = new SqlCommand("PP_updateStudent", connection))
{
cmd.Parameters.AddWithValue("@userNum", txtuserNum.Text);
cmd.Parameters.Add("@lastupdate", SqlDbType.DateTime).Value = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff");
int counter = 1;
foreach (TextBox textBox in ContentPlaceHolder1.Controls.OfType<TextBox>())
{
cmd.Parameters.AddWithValue($"@previous_Course{counter++}", previousCourse );
cmd.Parameters.AddWithValue($"@Course{counter++}", textBox.Text);
}
if (emptyTextBoxCount > 0)
{
for (int i = 0; i < emptyTextBoxCount - 1; i++)
{
cmd.Parameters.AddWithValue($"@Course{counter++}", System.DBNull.Value);
cmd.Parameters.AddWithValue($"@previous_Course{counter++}", System.DBNull.Value);
}
}
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
}
}