[英]Insert Statement Using Same Variable Multiple Times
需要將幾個浮動教師分配給數據庫中的多個班級。 該語句出錯, Error of the variable name @Teacher has already been declared. Variable names must be unique wihtin a query batch or stored procedure
Error of the variable name @Teacher has already been declared. Variable names must be unique wihtin a query batch or stored procedure
這是我的語法。 我應該做些什么改變才能做到這一點:
private void btnOne_Click()
{
string insertstatement = "INSERT INTO tbl_TeacherInfo (Teacher,Grade) VALUES (@Teacher, @Grade)";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand comm1 = new SqlCommand(insertstatement, conn))
{
conn.Open();
comm1.CommandText = insertstatement;
comm1.Parameters.AddWithValue("@Teacher", "Mrs Hart");
comm1.Parameters.AddWithValue("@Grade", "1st");
comm1.Parameters.AddWithValue("@Teacher", "Mrs Hart");
comm1.Parameters.AddWithValue("@Grade", "2nd");
comm1.Parameters.AddWithValue("@Teacher", "Mrs Hart");
comm1.Parameters.AddWithValue("@Grade", "3rd");
comm1.Parameters.AddWithValue("@Teacher", "Mrs Hart");
comm1.Parameters.AddWithValue("@Grade", "4th");
comm1.Parameters.AddWithValue("@Teacher", "Mrs Hart");
comm1.Parameters.AddWithValue("@Grade", "5th");
comm1.ExecuteNonQuery();
conn.Close();
}
}
}
var teacher = "Mrs Hart";
var grades = new[]{ "1st", "2nd", "3rd", "4th", "5th" };
var sql = "INSERT INTO tbl_TeacherInfo (Teacher,Grade) "
+ "VALUES (@Teacher, @Grade)";
using (var conn = new SqlConnection(/* connectionString */))
{
conn.Open(); // Open once and share it
// share the command
using (var cmd = new SqlCommand(sql, conn))
{
// assign the shared value across all queries, and
// add a placeholder for the revolving parameter
cmd.Parameters.AddWithValue("@Teacher", teacher);
cmd.Parameters.AddWithValue("@Grade", String.Empty); // placeholder
// iterate over the grades (1st, 2nd, etc.)
foreach (var grade in grades)
{
cmd.Parameters["@Grade"].Value = grade; // change @Grade
cmd.ExecuteNonQuery(); // Execute with these two values
}
}
conn.Close(); // cleanup
}
您的錯誤是@Teacher
分配具有相同名稱( @Teacher
和@Grade
)的參數。 我建議創建一個單獨的方法,該方法接受兩個參數( teacher
和grade
),並將一條記錄插入到tbl_TeacherInfo
,如下所示
private void InsertRecord(string teacher, string grade)
{
string insertstatement = "INSERT INTO tbl_TeacherInfo (Teacher,Grade) VALUES (@Teacher, @Grade)";
using (SqlConnection conn = new SqlConnection(connString))
{
using (SqlCommand comm1 = new SqlCommand(insertstatement, conn))
{
conn.Open();
comm1.Parameters.AddWithValue("@Teacher", teacher);
comm1.Parameters.AddWithValue("@Grade", grade);
comm1.ExecuteNonQuery();
conn.Close();
}
}
}
然后在btnOne_Click
方法中調用上述方法
private void btnOne_Click()
{
InsertRecord("Mrs Hart", "1st");
InsertRecord("Mrs Hart", "2nd");
InsertRecord("Mrs Hart", "3rd");
InsertRecord("Mrs Hart", "4th");
InsertRecord("Mrs Hart", "5th");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.