【发布时间】:2017-04-14 06:25:09
【问题描述】:
在使用 ASP.NET Web 表单时,我在使用数据库中的 UPDATE 和 DELETE 数据时遇到问题,代码在 Windows 表单中运行良好,所以我不知道我做错了什么。该代码假设使用新的编辑数据更新 Gridview,但是当我单击编辑按钮时,gridview 和数据表都没有发生任何事情。
这只是一个没有安全要求的练习,所以我只想知道如何首先让它工作。
protected void Edit_btn_Click(object sender, EventArgs e)
{
if (sqlCon.State == ConnectionState.Closed)
{
sqlCon.Open();
}
SqlCommand command = new SqlCommand();
command.Connection = sqlCon;
command.CommandText = ("UPDATE WareHouse SET [Name] = '" + Name_Field.Text + "' WHERE [Number] = '" + selectedName + "'");
command.ExecuteNonQuery();
command.CommandText = ("UPDATE WareHouse SET [Number] = '" + Number_Field.Text + "' WHERE [Number] = '" + selectedName + "'");
command.ExecuteNonQuery();
command.CommandText = ("UPDATE WareHouse SET [Storage] = '" + Storage_Field.Text + "' WHERE [Number] = '" + selectedName + "'");
command.ExecuteNonQuery();
command.CommandText = ("UPDATE WareHouse SET [Shelf] = '" + Shelf_Field.Text + "' WHERE [Number] = '" + selectedName + "'");
command.ExecuteNonQuery();
command.CommandText = ("UPDATE WareHouse SET [Brand] = '" + Brand_Field.Text + "' WHERE [Number] = '" + selectedName + "'");
command.ExecuteNonQuery();
SqlDataAdapter ad = new SqlDataAdapter("SELECT * FROM WareHouse", sqlCon);
DataTable ds = new DataTable();
ad.Fill(ds); // Fill t with data from Adapter a
GridView1.DataSource = ds; // Get data from Source t
GridView1.DataBind();
}
用于删除数据
protected void Remove_btn_Click(object sender, EventArgs e)
{
if (sqlCon.State == ConnectionState.Closed)
{
sqlCon.Open();
}
SqlCommand command = new SqlCommand();
command.Connection = sqlCon;
command.CommandText = "DELETE FROM WareHouse WHERE [Name] = '" + Name_Field.Text + "' AND [Number] = '" + selectedNumber + "' AND [Storage] = '" + selectedStorage + "' AND [Shelf] = '" + selectedShelf + "' AND [Brand] = '" + selectedBrand + "'";
command.ExecuteNonQuery();
clear();
showData();
}
除了这 2 个函数之外,还有另外两个函数可以从数据库中添加和搜索,它们也使用 SqlCommand,它们工作正常,没有问题。我的查询有问题吗?
【问题讨论】:
-
!!!警告 !!! Sql注入攻击......
-
不工作是什么意思?
-
您知道一次可以更新多个列吗?此外,这是一个等待发生的 SQL 注入的可怕示例(请阅读参数)。最后,看起来您正在尝试共享一个连接对象,而且效果很少。这些都不是您当前的问题,但仍然...
-
您永远不应该以这种方式创建 SQL 语句:SQL 注入。显示任何错误?你确定代码曾经被执行过吗?
-
你确定这个
"' WHERE [Number] = '" + selectedName + "'",因为数字被包裹在单引号中
标签: c# sql-server sqlcommand