Заявление: Эта статья была опубликована в журнале «Компьютерные приложения», том 23, выпуск 11.
Аннотация: При разработке различных систем использование хранимых процедур является хорошей привычкой, которая не только добавляет такие функции, как временные таблицы, функции и курсоры, но и Отладка, обновление и обслуживание становятся удобными. Однако почти все вызовы хранимых процедур находятся в одном и том же режиме, и основное отличие состоит в том, что параметры каждой хранимой процедуры различны. Итак, можно ли использовать метод для унификации всех вызовов хранимых процедур и сокращения ненужного программирования? На основе исследования базы данных SQL Server и ASP.NET мы реализовали унифицированный метод вызова. Этому методу необходимо только указать имя вызываемой хранимой процедуры и указать конкретные значения параметров при вызове, чтобы любые сохраненные. процедуру можно вызвать.
Ключевые слова: хранимая процедура, системная таблица, представление информационной структуры, ADO.NET Идентификационный код документа: ② Отчет о практических технических достижениях (технология), краткое изложение теоретического обучения и социальной практики (социальные науки).
Вызов хранимых процедур таким же образом в .NET.
Аннотация: Использование хранимых процедур — хорошая привычка при разработке проектов. Оно предоставляет временные таблицы, функции и курсоры, а также может принести пользу при отладке, обновлении и обслуживании. Однако почти все вызовы хранимых процедур выполняются по одному и тому же шаблону, в основном. разница между ними - это параметры каждой хранимой процедуры. Тогда можем ли мы вызывать хранимые процедуры одинаковым образом, несмотря на их различия, и сокращать программный код? Мы сделали это после изучения SQL Server и .NET. имя хранимой процедуры и значения ее параметров, вам не нужно создавать параметры самостоятельно. Ключевые слова: процедура Stord, системная таблица, информационная схема, ADO.NET.
Краткое описание: при разработке проекта вы часто вызываете метод. хранимые процедуры. Однако почти все вызовы хранимых процедур выполняются по одному и тому же шаблону. Основное различие заключается в типе и значении каждого создаваемого параметра. Итак, можно ли вызвать все хранимые процедуры через одну функцию (или класс)? В этой статье реализован единый метод вызова, основанный на принципе использования системных таблиц, предоставляемых базой данных. Этому методу необходимо только указать имя вызываемой хранимой процедуры и указать конкретные значения параметров при вызове, чтобы любые. хранимую процедуру можно вызвать.
Аннотация: Нам приходится вызывать хранимые процедуры систем баз данных во время разработки проекта. Однако вызовы хранимых процедур практически одинаковы, основное различие заключается в разнице между типом или значением параметров и т. д. Можем ли мы вызывать какие-либо хранимые процедуры через них? функция (или класс)? На основе системных таблиц, предоставляемых системами баз данных, мы написали класс для вызова любых хранимых процедур в этой статье. Для вызова хранимой процедуры вам необходимо указать только имя хранимой процедуры и. значение всех параметров хранимой процедуры.
Private void GetProcedureParameter(params object[] параметры)
{ SqlCommand myCommand2 = new SqlCommand();
myCommand2.Connection = this.myConnection;
myCommand2.CommandText = "выберите * из INFORMATION_SCHEMA.PARAMETERS где SPECIFIC_NAME = '" + this.ProcedureName + "' порядок по ORDINAL_POSITION";
SqlDataReader Reader = null; Reader = myCommand2.ExecuteReader(); // Создаем возвращаемый параметр
myParameter = new SqlParameter();
myParameter.ParameterName = "@Value";
myParameter . SqlDbType = SqlDbType.Int;
myParameter.Direction = ПараметрDirection.ReturnValue;
myCommand.Parameters.Add(myParameter);
// Создайте каждый параметр. Здесь вы можете автоматически создать тип SqlParameter, значение, направление и другие атрибуты.
while(reader.Read())
{
myParameter = новый SqlParameter();
myParameter.ParameterName = читатель["PARAMETER_NAME"].ToString();
myParameter.Direction = читатель["PARAMETER_MODE"].ToString()=="IN" ?ParameterDirection.Input:ParameterDirection.Output;
switch(reader["DATA_TYPE"].ToString()) {
case "int" :
if(myParameter.Direction == ПараметрDirection.Input)
myParameter.Value = (int)parameters[i] ;
myParameter.SqlDbType = SqlDbType.Int
;
//...большая часть обработки конкретных типов опускается
по умолчанию :break;
myCommand.Parameters.Add
(myParameter)
;
3.2. Набор данных результата возврата, возвращаемое значение и набор исходящих параметров. После создания параметров хранимой процедуры мы можем вызвать хранимую процедуру. Потому что в .NET обычно используемыми классами, возвращающими наборы результатов, являются SqlDataReader и DataSet, а SqlDataReader можно использовать только при сохранении соединения, а DataSet — нет. В нашей реализации соединение должно быть отключено после вызова, поэтому для сохранения возвращенного набора результатов используется DataSet.
public SqlResult Call(params object[] параметры){ // SqlResult — это самоопределяемый класс, используемый для сохранения наборов данных результатов, возвращаемых значений и наборов исходящих параметров SqlResult result = new SqlResult(); // Определите собственное соединение как. необходимая строка
myConnection = new SqlConnection(ConnectionString);
myCommand = new SqlCommand(this.ProcedureName, myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
SqlDataAdapter = new SqlDataAdapter(myCommand)
; // Получить и создать. Сохраняем параметры процедуры и устанавливаем значения
GetProcedureParameter(parameters);
myAdapter.Fill(result.dataSet, "Table" // Получаем пару значений исходящего параметра и имени хранимой процедуры и сохраняем ее в хэш-таблице. GetOutputValue(result) ; // Здесь освобождаем различные ресурсы и отключаем
myAdapter.Dispose();
myConnection.Close
();
myConnection.Dispose
();
4. Дальнейшая работа Хотя наша реализация здесь предназначена для базы данных SQL Server, этот метод можно использовать для любой базы данных, которая предоставляет представления информационной структуры, соответствует стандарту ANSI-92 или предоставляет метаданные. Мы инкапсулируем его в класс SqlProcedure, и хранимую процедуру можно легко вызвать при необходимости, что сокращает объем повторяющейся работы с кодом. Чтобы класс SqlProcedure поддерживал больше типов данных, в методе GetProcedureParameter() вам необходимо проанализировать тип, направление, длину, значение по умолчанию и другую информацию каждого параметра в соответствии с вашими потребностями, а затем создать этот параметр. По сути, таким способом можно реализовать любой тип, даже типы изображений. Таким образом, класс может быть очень общим и полезным в любом проекте.
Ссылки
[1] Рэй Рэнкинс, Пол Дженсен, Пол Бертуччи, Практическая книга по SQL Server 2000, Пекин: Electronic Industry Press, 2002.
[2] Библиотека MSDN, январь 2003 г., Microsoft Corporation.
Об авторе: Лю Чжибо (1979-), мужчина, из Синьхуа, провинция Хунань, степень магистра, основные направления исследований: нейронные сети и распознавание образов, информационная система автоматизации делопроизводства.
электронная почта: [email protected]