Налаштування параметрів і типи даних параметрів

Об'єкти команди використовують параметри для передачі значень в вирази SQL або процедури, що зберігаються, забезпечуючи перевірку типів і правильності. На відміну від тексту команд, вхідні параметри обробляються як літерні значення, а не як виконуваний код. Це допомагає захищатися від атак шляхом впровадження коду SQL, при яких зловмисник вставляє в інструкцію SQL команду, яка ставить під загрозу безпеку сервера.

Параметризрвані команди також дозволяють підвищити продуктивність при виконанні запиту, оскільки при їх використанні сервер баз даних може точно зіставити входить команді правильний кешованих план запиту. Додаткові відомості див. У розділах Кешування і повторне використання плану виконання і Повторне використання параметрів і плану виконання електронної документації по SQL Server. Крім підвищення безпеки і продуктивності параметризрвані команди забезпечують зручний метод організації значень, що передаються в джерело даних.

Об'єкт DbParameter можна створити за допомогою конструктора або шляхом додавання його в колекцію DbParameterCollection за допомогою методу Add колекції DbParameterCollection. Метод Add приймає в якості вхідних даних або аргументи конструктора, або існуючий об'єкт параметра - в залежності від постачальника даних.

Інформацію про параметри можна вивести з збереженої процедури за допомогою класу DbCommandBuilder. Обидва класи, SqlCommandBuilder і OleDbCommandBuilder. забезпечують статичний метод DeriveParameters. який автоматично заповнює колекцію параметрів об'єкта команд, що використовує інформацію про параметрах від збереженої процедури. Зверніть увагу, що метод DeriveParameters перезаписує існуючу інформацію про параметри для команди.

Виведення інформації про параметри знижує продуктивність, так як для цього потрібен додатковий обмін даних з джерелом даних. Якщо інформація про параметри відома під час розробки, можна збільшити продуктивність програми, задавши параметри явно.

Збережені процедури дають безліч переваг в додатках, керованих даними. За допомогою збережених процедур операції з базою даних можна инкапсулировать в одну команду, оптимізовану для продуктивності і володіє підвищеною безпекою. Хоча збережені процедури можна викликати і за допомогою інструкції SQL, вказуючи в ній ім'я процедури і її аргументи, використання колекції Parameters об'єкта ADO.NET в DbCommand дозволяє більш явно задати параметри процедури, а також звертатися до вихідних параметрів і повертається значенням.

Параметризрвані інструкції виконуються на сервері за допомогою процедури, що sp_executesql, яка дозволяє повторно використовувати плани запитів. Локальні курсори або змінні в пакеті sp_executesql недоступні пакету, який викликав sp_executesql. Зміни в контексті бази даних тривають тільки до завершення виконання інструкції sp_executesql. Додаткові відомості див. В електронній документації по SQL Server.

Якщо параметри використовуються з об'єктом SqlCommand для виконання процедури SQL Server, то імена параметрів, що додаються в колекцію Parameters. повинні відповідати іменам маркерів параметрів в збереженій процедурі. Постачальник даних .NET Framework для SQL Server не підтримує местозаполнітель (?) Для передачі параметрів в інструкції SQL і процедури. Він обробляє параметри в збереженій процедурі як іменовані параметри і шукає відповідні маркери параметрів. Наприклад, збережена процедура CustOrderHist визначається з використанням параметра @CustomerID. Коли програма виконує ця збережену процедуру, вона також повинна використовувати параметр @CustomerID.

Якщо з об'єктами OleDbCommand або OdbcCommand використовуються параметри, порядок параметрів, що додаються в колекцію Parameters. повинен відповідати порядку параметрів, заданих в збереженій процедурі. Постачальник даних .NET Framework для OLE DB і постачальник даних .NET Framework для ODBC обробляють параметри в збереженій процедурі як местозаполнітелі і застосовують значення параметрів в правильному порядку. Крім того, параметри повертаються значень повинні бути першими параметрами, що додаються в колекцію Parameters.

Постачальник даних .NET Framework для OLE DB і постачальник даних .NET Framework для ODBC не підтримують іменовані параметри для передачі параметрів в інструкції SQL і процедури. У цьому випадку необхідно використовувати местозаполнітель (?), Як в наступному прикладі.

В результаті порядок додавання об'єктів Parameter в колекцію Parameters повинен строго відповідати позиції местозаполнітеля параметра (?).

Показ: успадкувала Захищений

Чи була ця сторінка корисною? Та ні

1500 символів Якого залишилося

Дякуємо! Дякуємо за відгук. Ваша думка дуже важлива для нас.

центри розробки

Спільнота

Зв'яжіться з нами

Схожі статті