【发布时间】:2012-03-18 22:25:27
【问题描述】:
从 sql server 中删除一行时,我在 Asp.net 中的 C# 代码有一个小问题。我正在使用 ExecuteNonQuery 来确定我向页面呈现的消息。如果 ExecuteNonQuery 返回 1,那么我会显示成功消息。我被卡住的地方是我有相同的逻辑来添加记录和更新记录,我的代码工作正常。代码见下文。
private void Delete_row(string ImageId)
{
string sSQL = "delete FROM dbo.Image_library_UK_temp where Image_id=" + ImageId;
using (SqlConnection dbConnection = new SqlConnection(app_settings.sql_conn_string_db))
{
try
{
//delete the row from db
dbConnection.Open();
SqlCommand command = new SqlCommand(sSQL, dbConnection);
command.CommandType = CommandType.Text;
command.CommandTimeout = 1024;
command.ExecuteNonQuery();
int rowsAffected = command.ExecuteNonQuery();
if (rowsAffected == 1)
{
messagepanel1.ShowSuccessMessage("The image " + txtImgTitle.Text + "has been deleted from the system.");
DisableValidation();
}
}
catch (Exception ex)
{
messagepanel1.ShowErrorMessage("Error: Deletion unsuccessful");
}
Session.RemoveAll();
generateTable(false);
}
}
当前受影响的行返回 0。这是一个简单的 SQL 语句,因此我的 sql 是用 C# 硬编码的,我没有使用存储过程。
有什么想法可以让我完成这项工作吗?
【问题讨论】:
-
你的代码很容易被SQL注入,这是一个非常严重的安全问题!
-
你试过直接在sql server上运行查询吗?有用吗?
-
本网站仅供内部使用,否则我同意。
-
@nickgowdy - 即使它是一个内部站点,使用准备好的语句也会带来执行计划重用、标准化编码实践、类型安全、简化调试的好处......我可以继续,但让我们只是说没有一个很好的例子不使用它们。
标签: c# asp.net sql sql-server-2008