Каталог статей

Главная » Статьи » .NET

Введение в ADO.NET II
Как, и обещали, здесь мы рассмотрим как получить результат выполнения хранимых процедур. Для этого надо всего лишь поменять значение параметра направления на ParameterDirection.Output.

Ниже приведен пример кода на C Sharp:
SQL Providerusing System.Data;
using System.Data.SQL;

public class SQLConnect {
  private SQLConnection dataConn = null;
  private SQLDataReader reader = null;
   
  public string openConnection(HttpResponse Response,String
  dbConnectString,String cmdString) {
  try {
  dataConn = new SQLConnection(dbConnectString);
  SQLCommand sqlCmd = new SQLCommand(cmdString,dataConn);
  sqlCmd.CommandType = CommandType.StoredProcedure;

  SQLParameter param = sqlCmd.Parameters.Add(new
  SQLParameter("@CustomerID", SQLDataType.Char, 5));
  param.Direction = ParameterDirection.Input;
  sqlCmd.Parameters["@CustomerID"].Value = "ALFKI";
  param = sqlCmd.Parameters.Add(new SQLParameter("@output",
  SQLDataType.Int));
  param.Direction = ParameterDirection.Output;

  dataConn.Open();
  sqlCmd.Execute(out reader);
  Response.Write("<table><tr><td><b>Product Name</b></td>");
  Response.Write("<td><b>Total</b></td></tr>");
  while (reader.Read()) {
  Response.Write("<tr>");
  Response.Write("<td>");
  Response.Write(reader["ProductName"].ToString());
  Response.Write("</td><td>");
  Response.Write(reader["Total"].ToString() + "</td>");
  Response.Write("</tr>");
  }
  Response.Write("</table>");
  Response.Write(sqlCmd.Parameters["@output"].Value;
  return "<p>SQL Server Data Connection Opened";
  }
  catch (Exception e) {
  return(e.ToString());
  }
  finally {
  if (reader != null) {
  reader.Close();
  }
  if (dataConn != null) {
  dataConn.Close();
  }
  }
  }
} // End Class

ADO+ Provider:using System.Data;
using System.Data.ADO;

public class ADOConnect {
  private ADOConnection dataConn = null;
  private ADODataReader reader = null;
  public string openConnection(HttpResponse Response,String
  dbConnectString,String cmdString) {
  try {
  dataConn = new ADOConnection(dbConnectString);
  ADOCommand adoCmd = new ADOCommand(cmdString,dataConn);
  adoCmd.CommandType = CommandType.StoredProcedure;
  ADOParameter param = null;
  param=adoCmd.Parameters.Add("@CustomerID", ADODBType.Char, 5);
  param.Direction = ParameterDirection.Input;
  adoCmd.Parameters["@CustomerID"].Value = "ALFKI";

  param = adoCmd.Parameters.Add("@output",ADODBType.Integer);
  param.Direction = ParameterDirection.Output;

  dataConn.Open();
  adoCmd.Execute(out reader);
  Response.Write("<table><tr><td><b>Product Name</b></td>");
  Response.Write("<td><b>Total</b></td></tr>");
  while (reader.Read()) {
  Response.Write("<tr>");
  Response.Write("<td>");
  Response.Write(reader["ProductName"].ToString());
  Response.Write("</td>");
  Response.Write("<td>");
  Response.Write(reader["Total"].ToString());
  Response.Write("</td></tr>");
  }
  Response.Write("</table>");
  Response.Write(adoCmd.Parameters["@output"].Value;
  return "<p>ADO Server Data Connection Opened";
  }
  catch (Exception e) {
  return(e.ToString());
  }
  finally {
  if (reader != null) {
  reader.Close();
  }
  if (dataConn != null) {
  dataConn.Close();
  }
  }
  }
} //End Class


Возвращаемые значения процедур легко получаются следующим образом: param = sqlCmd.Parameters.Add(new SQLParameter("RT_VAL", SQLDataType.Int));
param.Direction = ParameterDirection.ReturnValue;
...
Response.Write(sqlCmd.Parameters["RT_VAL"].Value;

ADO+ Provider:param = adoCmd.Parameters.Add("RETURN_VALUE", ADODBType.Integer);
param.Direction = ParameterDirection.ReturnValue;
...
Response.Write(adoCmd.Parameters["RETURN_VALUE"].Value;


The DatasetCommand object. Как мы уже выяснили, Command Object может выполнять SQL запросы и хранимые процедуры. DatasetCommand object предоставляет ту же функциональность плюс дает возможность взаимодействовать с Dataset object. Вы можете работать с DatasetCommand так же, как и с Command, но появляется возможность поместить полученные данные в Dataset object. Ниже показан пример объявления и использования DatasetCommand object. Легко увидеть, что код - тот же самый за исключением того, что используются другие имена объектов. 


SQL Provider: 

dataConn = new SQLConnection(dbConnectString);
SQLDatasetCommand dsCmd = new SQLDatasetCommand(cmdString,dataConn);


ADO+ Provider: 

dataConn = new ADOConnection(dbConnectString);
ADODatasetCommand dsCmd = new ADODatasetCommand(cmdString,dataConn);

Эти примеры заполнят некий Dataset данными, полученными при исполнения SQL скрипта. Например, SELECT * FROM Orders заполнит Dataset всеми колонками и строками, найденными в таблице Orders. Dataset может делать гораздо больше, чем просто помещать данные в Dataset. Возможно выполнение практически всех операций над БД, то есть он может быть объявлен как update, insert, delete Сommand. Например, вместо того, чтобы каждый раз предоставлять имя хранимой процедуры, используемой для обновления БД, вы можете объявить однажды метод Update() и вызывать его каждый раз при необходимости. Теперь, после того, как были сделаны изменения в Dataset dsOrders вы можете легко обновлять источник данных с помощью вызова Ds.Update(dsOrders) 

Следующая наша статья будет полностью посвящена Dataset object и вариантам его использования. 

Категория: .NET | Добавил: virusik (04.07.2009)
Просмотров: 503 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Имя *:
Email *:
Код *:
вход на сайт
Категории раздела
C/С++ [24]
статьи о языке C/С++
Visual FoxPro [1]
информация о языке Visual FoxPro
.NET [24]
статьи о языке программирования .NET
ваши статьи [4]
здесь вы можете размещать сваи статьи
модинг [4]
статьи о модинге ПК
Поиск по сайту
наши опросы
Оцените мой сайт
Всего ответов: 10
Мини-чат
помощь проекту
помоги проекту
ЯндексЯндекс. ДеньгиХочу такую же кнопку
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Каталог http://www.internetmir.ru Лучшие сайты интернета в каталоге Intenetmir
  • Delphi.int.ru - Сообщество программистов: общение, помощь, обмен опытом.
    реклама 88х31
    Каталог сайтов. Раскрутка. Хостинг. Каталог ссылок. Информационный портал - Старого.NET Шпоры, курсовые, пособия, рефераты, ВУЗы.
    Статистика
    webgari.com Рейтинг сайтов
    Раскрутка сайтов
    Яндекс цитирования
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0