我创建了一个Web表单,其中包含:Dropdownlist,texbox和rename按钮。 一般的想法是Dropdownlist包含我的数据库中一个表的列名列表。 然后,用户选择其中一个名称,并在文本框中输入新名称。之后,他单击重命名按钮。结果是重命名我的数据库中的选定列。 我的代码运行良好。它给出了确切的结果。 看我的代码:
protected void Button1_Click(object sender, EventArgs e)
{
string conString = @"Data Source=FATTO-TOSH\SQLEXPRESS;Initial Catalog=Positions;Integrated Security=True";
if (DropDownList1.SelectedIndex == 0)
using (var con = new SqlConnection(conString))
{
var cmd = new SqlCommand("sys.sp_rename", con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@objname", "PositionsReq.skill1")
.SqlDbType = SqlDbType.NVarChar;
cmd.Parameters.AddWithValue("@newname", name.Text)
.SqlDbType = SqlDbType.NVarChar;
cmd.ExecuteNonQuery();
}
if (DropDownList1.SelectedIndex == 1)
using (var con = new SqlConnection(conString))
{
var cmd = new SqlCommand("sys.sp_rename", con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@objname", "PositionsReq.skill2")
.SqlDbType = SqlDbType.NVarChar;
cmd.Parameters.AddWithValue("@newname", name.Text)
.SqlDbType = SqlDbType.NVarChar;
cmd.ExecuteNonQuery();
}
if (DropDownList1.SelectedIndex == 2)
using (var con = new SqlConnection(conString))
{
var cmd = new SqlCommand("sys.sp_rename", con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@objname", "PositionsReq.skill3")
.SqlDbType = SqlDbType.NVarChar;
cmd.Parameters.AddWithValue("@newname", name.Text)
.SqlDbType = SqlDbType.NVarChar;
cmd.ExecuteNonQuery();
}
}
我的问题是: 修改只实现了一次(关于一列),因为当我将名称从skill1更改为Sk时。可能在其他时间,用户想要修改Sk到其他名称。代码不起作用,因为它初始化为列名仅为skill1。你有没有想法如何将代码推广到列的名称? 谢谢
答案 0 :(得分:0)
您没有使用DropDownList1.SelectedIndex
为什么不将列表的名称更改为DropDownList1
中列出的列,而是使用DropDownList1.SelectedValue
,如下所示:
protected void Button1_Click(object sender, EventArgs e)
{
string conString = @"Data Source=FATTO-TOSH\SQLEXPRESS;Initial Catalog=Positions;Integrated Security=True";
using (var con = new SqlConnection(conString))
{
var cmd = new SqlCommand("sys.sp_rename", con);
con.Open();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@objname", DropDownList1.SelectedValue)
.SqlDbType = SqlDbType.NVarChar;
cmd.Parameters.AddWithValue("@newname", name.Text)
.SqlDbType = SqlDbType.NVarChar;
cmd.ExecuteNonQuery();
}
}
确保在实际执行任何命令之前在SelectedValue
上进行一些空检查。