1

我继承了一个包含大量 ADO 工作的应用程序,但是编写的插入/更新帮助器方法返回 void。我们也遇到了很多数据更新/插入实际上没有发生的问题。我的目标是更新所有这些以检查受影响的行,并根据结果采取相应的行动,但暂时找出可能导致问题的原因,我想记录对服务器调用的 SQL 语句和数量受语句影响的行数。

这是我正在尝试的声明:

 SqlCommand com = new SqlCommand(String.Format("'INSERT INTO
     SqlUpdateInsertHistory(Statement, AffectedRows) VALUES (''{0}'', {1});'",
     statement.Replace("'", "''"), rows), con);

但它似乎在传入的 sql 中的某个地方不断中断(某些情况下是单引号,但我想还有其他字符也可能导致它。

有没有一种安全的方法来准备要插入的语句字符串?

4

2 回答 2

2

如果不完全修改您正在做的事情,我就无法正确地提出这个问题的解决方案。您目前对 SQL 注入持开放态度。即使这是一个本地应用程序,也要练习你想怎么玩。

using (SqlCommand com = new SqlCommand("INSERT INTO SqlUpdateInsertHistory(Statement, AffectedRows) VALUES (@Statement, @AffectedRows)", con))
{
    com.Parameters.AddWithValue("@Statement", statement);
    com.Parameters.AddWithValue("@AffectedRows", rows);

    com.ExecuteNonQuery();
}
于 2013-11-01T18:54:35.940 回答
0

您是否尝试过 SQL Server Profiler?它已经被编写并记录查询等。

其他人尝试过这个并在这里得到了很多不错的答案

于 2013-11-01T18:49:05.197 回答