Как правильно вставить сценарий SQL в таблицу SqlServer - PullRequest
3 голосов
/ 17 февраля 2010

Я бы хотел вставить скрипт sql в таблицу. Я уверен, что это сложнее, чем просто заключить скрипт в кавычки и добавить его в оператор вставки (например, скрипты с кавычками и более сложным экранированием кажутся проблемными)

Итак, как я могу безопасно хранить произвольные tsql в таблице SqlServer?

Я могу использовать sql или c # для кодирования скрипта, если это необходимо.

Ответы [ 3 ]

9 голосов
/ 17 февраля 2010

Использовать параметризованный запрос:

C #

var cmd = new SqlCommand(...);
cmd.CommandText = "INSERT INTO [Bla] ([SQL Column]) VALUES (@MyValue)";
cmd.Parameters.AddWithValue("MyValue", yourValueHere);

Это позаботится обо всех цитатах и ​​т. Д.

Если вы хотите использовать хранимую процедуру, вы должны выполнить ее аналогичным образом:

var cmd = new SqlCommand(...);
cmd.CommandText = "StoreSQL";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("MyValue", yourValueHere);
2 голосов
/ 17 февраля 2010

Сохранение текста SQL в базе данных на самом деле не должно быть проблемой, если вы используете хранимую процедуру, которая принимает параметр nvarchar (max), не нужно ничего экранировать.

например.

CREATE PROCEDURE uspStoreSQL
(
  @sql nvarchar(max)
)
AS
INSERT INTO SomeTable (SQLText)
Values (@sql)
1 голос
/ 17 февраля 2010

Используйте хранимые процедуры и передайте сценарий sql в качестве параметра - у вас не будет проблем с кавычками и специальными символами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...