Я взломал программу в условиях стеснения / ограничения времени, которая создает записи по соединению ODBC, и теперь, когда ситуация закончилась, я бы хотел ее улучшить.Одна из вещей, которая выделяется, - это использование SQL-выражений для создания операторов.
Пример таблицы, в которую я в настоящее время вставляю:
INSERT INTO table1
(..., value1, foreign_key_1)
VALUES
(..., 'myvalue', (SELECT key FROM othertable WHERE othertable.name = 'some payment type'));
Способ работы подготовленного операторасначала нужно объявить ключи, используя
@identifier
, затем создать экземпляры SqlParameter
, добавить тип и значение, добавить созданный параметр в оператор, подготовить его с помощью prepare()
и, наконец, запустить его.
Теперь я хочу изменить свои INSERT, созданные вручную, чтобы использовать SqlCommand () и SqlParameter () для предотвращения атак с использованием SQL-инъекций.
Как мне объявить подзапрос, заполняющий поле вВставить заявление?Прямое решение было бы иметь SqlDbType.Subquery
, но, похоже, такого нет.
Использую ли я SqlDbType.Structured
или SqlDbType.Udt
или SqlDbType.Variant
, или это не поддерживаемая функцияна SqlCommand()
?