2013-11-01 4 views
1

Я унаследовал приложение с большим количеством работы ADO в нем, но метод вспомогательной вставки/обновления, который был записан, возвращает void. Мы также сталкиваемся с множеством проблем с обновлением данных/вставками, которые на самом деле не происходят. Моя цель - обновить их все, чтобы проверить затронутые строки и в зависимости от результатов, действовать соответственно, но пока что найти то, что может вызвать проблему, я хотел зарегистрировать SQL-запросы, вызываемые против сервера, и номер строк, затронутых оператором.Вставить оператор SQL в столбец SQL Server

Это заявление, которое я пытаюсь:

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

, но это, кажется, постоянно перерыв где-то в SQL, который передается в (некоторых случаях на одинарные кавычки, но я полагаю, есть и другие персонажи, может привести к его.

есть ли безопасный способ приготовительной строку заявления, чтобы вставить?

ответ

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(); 
} 
+1

Хороший вопрос. Я был более в спешке, чтобы заставить дело работать, что я как бы забыл добавить его таким образом. Я обнаружил, что реальная проблема заключается в том, что dev db и prod db были несогласованны по структуре, поэтому мне пришлось добавить копию в dev db. – Robert

0

вы пробовали SQL Server Profiler? Это уже было написано и журналами запросов и т.д.

Кто-то еще попробовал это и получил много decent answers here.

Смежные вопросы