我正在尝试更新我的数据库(表)并使活动列= 1。 我有不同国家和参数的重复报告(subject_text)。
subject_text countries parameter1 active
usage GB 1 0
usage FR 2 0
usage PT 1 0
closed GB,FR,PT 1 0
以下是我的数据库看起来像的示例(简化,有更多参数和更多报告,但我希望你能看到我的意思是重复的报告名称)
这是我的.cs文件,用于显示我正在尝试执行的更新.Active_text是下拉列表形式,因此用户可以选择要更新的报告。这些报告(subject_text)被硬编码到我的ASPX页面中。选择“关闭”等报告时,更新有效,但更新的报告有不同的国家或参数,我遇到了麻烦。
Masterpage master
将此页面链接到.getDropDownListValue所在的位置
当下拉列表包含不同的元素时,如何添加到更新语句?
protected void RunReport_Click (object sender, System.EventArgs e)
{
MasterPage master = (MasterPage)this.Master;
string sqlStatement = "";
sqlStatement = @"UPDATE [TODD].[dbo].[Table] SET Active='1' WHERE subject_text = @report";
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sqlStatement, conn);
cmd = new SqlCommand(sqlStatement, conn);
cmd.Parameters.AddWithValue("@report", ddl_Report.SelectedItem.Text);
string getcountry = master.getDropDownListValue(ddl_country, false);
if (!string.IsNullOrWhiteSpace(getcountry))
{
cmd.Parameters.AddWithValue("@country", getcountry);
sqlStatement += "AND countries = @country";
}
string getparam1 = master.getDropDownListValue(Param1, false);
if (!string.IsNullOrWhiteSpace(getparam1))
{
cmd.Parameters.AddWithValue("@param1", getparam1);
sqlStatement += "AND parameter1 = @param1";
}
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
感谢您的时间。
答案 0 :(得分:3)
移动
SqlCommand cmd = new SqlCommand(sqlStatement, conn);
到字符串sqlStatement
在sqlStatement
基于SqlCommand
sqlStatement
之前,应先向new SqlCommand(sqlStatement, conn);
添加新文字
另外,您无需再拨打margin-top
次
答案 1 :(得分:1)
你为什么不传递身份?这更清洁。
UPDATE [TODD].[dbo].[Table] SET Active='1' WHERE RecordID = @RecordId