Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

В тридцать втором выпуске рассылки '.Net Собеседник' вы можете узнать о том,


Информационный Канал Subscribe.Ru

.Net Собеседник #32

Содержание
  1. От автора
  2. Обзор новостей
  3. Слой доступа к данным для выполнения хранимых процедур (ХП)
  4. Время кода - readonly поля и константы
  5. Форумы .Net на www.sql.ru

От автора

Здравствуйте, коллеги!

Знаете ли вы, что именовать классы, переменные и т.д. и т.п. можно, используя русские символы? Может и не стоит привыкать, особенно если вы работаете в транснациональной корпорации или заняты в аутсорсинг-проекте, но тем не менее:

using System;

namespace TestConsoleApplication
{
class Class1
{

[STAThread]
static void Main(string[] args)
{
Привет п = new Привет();
п.вывод_привета();
string колесо = "колесо";
int киеву1500 = 1500;
byte юбилей = 50;
Console.WriteLine(колесо.Length);
// ну и т.д.
}
}

class Привет
{
public Привет()
{

}
public void вывод_привета()
{
Console.Write("Привет, ребята!!!");
}}}

На этом всё - желаю интересного чтения.

{К содержанию}

Обзор новостей

  1. Live Journal блог от hDrummer'a
    В дополнение к рассылке решил попробовать вести ещё и блог, надеюсь на обратную связь и обмен мнениями по поводу как улучшить, усовершенствовать и т.д. Заходите в гости.
  2. Задерживается выход Visual Studio 2005 Beta 2 и релиза
    Слухи о задержке выпуска релиза Visual Studio 2005 получили подтверждение с установкой новых дат выхода Beta 2 (конец марта-начало апреля), а релиза – в сентябре месяце.
  3. Снижена цена на TierDeveloper 4.0 Professional Edition
    Идя навстречу требованиям пользователей, AlachiSoft снизила цену на TierDeveloper 4.0 Professional Edition до $395. TierDeveloper – инструмент генерации кода и объектно-реляционного маппинга кода.
  4. Вышел Lattice.DataMapper 1.1
    Lattice.DataMapper - инструмент для привязки объектов .NET к БД, использующий для этого внешние конфигурационные файлы XML или файлы привязки. Доступ к данным вынесен в XML и может включать как запросы на SQL, так и вызовы ХП.
  5. Вышел Aspose.TextBox.Web 2.0
    Компонент Aspose.TextBox.Web – визуальный серверный компонент ASP.Net, предлагающим пользователям полноценный редактор.
  6. ComponentOne® выпустила Studio Enterprise™ 2005 v1
    ComponentOne выпустила Studio Enterprise 2005 v1. В этом выпуске содержится более 45 обновлений компонент .NET WinForms и ASP.NET WebForms.
  7. Вышел FarPoint’s Spread for Web Forms v2
    FarPoint’s Spread for Web Forms v2 – профессиональная сетка данных/редактор электронных таблиц для ASP.NET, поддерживающая редакцию ячеек, импорт/экспорт файлов MS Excel, ссылки на формулы, , 16 типов ячеек, объединения ячеек, заголовки, 300 встроенных формул, иерархический просмотр, и многое другое.
  8. SQL Tool для аудита SQL БД
    Apex SQL Tools выпустила новую версию инструмента для аудита БД Apex SQL Audit. Apex SQL Audit – это инструмент с отчётами, строящимися по технологии ASP.NET, настраиваемыми шаблонами, лёгким управлением триггерами и т.п. Бесплатная поддержка и обновления на протяжении всего периода использования продукта.
  9. Вышел ASP.NET Chat Pro v3.0
    Попробуйте новую версию ZBit ASP.NET Chat Pro. Много новых особенностей, улучшенная функциональность бана, многоязычная поддержка, не используется Java и ActiveX.
  10. Открылся Русский Channel 9
    Channel 9 – это проект по открытию секретов Microsoft. Здесь опубликованы видеоролики, показывающие, как живет Microsoft: экскурсия по кампусу Microsoft в Редмонде, видеоинтервью с сотрудниками Microsoft, рассказы о том, как разрабатываются продукты Microsoft. Channel 9 – это общение, максимально открытое общение сотрудников Microsoft и пользователей технологий Microsoft. Channel 9 – это не инструмент маркетинга или PR. Channel 9 – это домашнее видео, не стоит здесь ждать роликов, снятых профессиональными операторами, смонтированных профессиональными монтажерами, придуманных профессиональными режиссерами - ролики снимаются обычными сотрудниками Microsoft с использованием обычных любительских видеокамер. Идея Channel 9 пришла из авиации. Авиакомпания United Airlines сделала в своих самолетах на 9 канале для наушников пассажиров передачу переговоров экипажа – пассажиры могли в течение полета слушать то, что происходит в кабине пилотов. Channel 9 – это попытка показать «кабину пилотов» Microsoft, показать как создаются новые продукты, как живут разработчики Microsoft. Channel 9 вначале появился на английском языке (channel9.msdn.com), а теперь этот проект доступен и на русском, для чего мы решили использовать тот факт, что из 20000 разработчиков в кампусе Microsoft в Редмонде минимум 1000 говорят на русском языке. Так что «скоро на экранах»! :)

{К содержанию}

Слой доступа к данным для выполнения хранимых процедур (ХП)

Слой доступа к данным для выполнения хранимых процедур (ХП)

ЯЗЫК:
Автор статьи: Surapureddy Sriram

ПЕРЕВОД: Чужа В.Ф. ака hDrummer
КОД К СТАТЬЕ: Callingapp.zip , Dataaccesslayer.zip

В этой статье рассказано каким образом можно выполнить одну или несколько ХП из слоя приложения. Поскольку слой доступа к данным полностью отделен от слоя приложения, нам необходимо только лишь изменить слой приложения при изменениях в схеме БД.

Эта статья в основном рассматривает исполнение ХП, не возвращающих набор данных. Хотя всё сказанное относится и к таким ХП, которые возвращают наборы данных.

Слой доступа к данным

Ключевые элементы:

  1. Структура ParamData
  2. Класс StoredProcedure
  3. Класс StoredProcedureCollection
  4. Класс Execute
Структура ParamData будет содержать имя параметра, его значение и тип данных.

struct ParamData
{
public string pName,pValue;
public SqlDbType pDataType;
public ParamData(string pName,SqlDbType pDataType,string pValue)
{
this.pName=pName;
this.pDataType=pDataType;
this.pValue=pValue;
}
}

Класс Stored Procedure, у которого есть методы SetParam и GetParam для установки и считывания параметров. Объект добавляется в массив, который и содержит объекты класса ParamData.

public void SetParam(string pName,SqlDbType pDataType,string pValue)
{
ParamData pData=new ParamData(pName,pDataType,pValue);
// добавляем в массив sParams.
sParams.Add(pData);
}

Подобным образом метод GetParams просто возвращает массив объектов класса ParamData.

public ArrayList GetParams()
{
if (!(sParams==null))
{
return sParams;
}
else
{
return null;
}}

Класс StoredProcedureCollection содержит коллекцию классов ХП. Этот класс обладает методами Add и Remove для добавления и удаления классов StroredProcedure по мере надобности.

public void add(StoredProcedure value)
{
List.Add(value);
}
public void Remove(int index)
{
if (index > Count - 1 || index < 0)
{
Console.WriteLine("No data to remove");
}
else
{
List.RemoveAt(index);
}
}

Также есть метод ITEM для получения объекта класса StoredProcedure из списка.

public StoredProcedure Item(int Index)
{
return (StoredProcedure) List[Index];
}

Класс Execute имеет статический метод ExecuteSps для выполнения ХП, находящейся в коллекции.

public static bool ExecuteSps(StoredProcedureCollection spCollection,SqlConnection Connection)
{
try
{
foreach(StoredProcedure spData in spCollection)
{
SqlCommand cmd=new SqlCommand();
int i=0;
if (Connection.State!= ConnectionState.Open)
Connection.Open();
cmd.Connection=Connection; cmd.CommandType=CommandType.StoredProcedure;
cmd.CommandText=spData.ProcName;
IEnumerator myEnumerator = spData.GetParams().GetEnumerator();
while (myEnumerator.MoveNext())
{
ParamData pData=(ParamData)myEnumerator.Current;
cmd.Parameters.Add(pData.pName,pData.pDataType);
cmd.Parameters[i].Value=pData.pValue;
i=i+1;
}
cmd.ExecuteNonQuery();
}
return true;
}
catch(Exception exc)
{
return false;
}
}

Весь код содержится в файле DataAccessLayer.zip.

Слой приложения

В слое приложения мы должны добавить ссылку на библиотеку DataAccessLayer.dll. После добавления такой ссылки мы можем вызывать функции слой доступа к данным по мере необходимости. Преимуществом такого подхода является возможность динамического добавления/удаления параметров по мере изменения ХП.

private void button1_Click(object sender, System.EventArgs e)
{
SqlConnection connection=new SqlConnection();
//измените строку подключения на свою
string connectString="Persist Security Info=False;Integrated Security=SSPI;database=DB1;server=Server2;Connect Timeout=60";
connection.ConnectionString=connectString;
if (connection.State!=ConnectionState.Open)
connection.Open();
DataAccessLayer.StoredProcedureCollection spCollection=new DataAccessLayer.StoredProcedureCollection();
DataAccessLayer.StoredProcedure spData=new DataAccessLayer.StoredProcedure();
spData.ProcName=txtSpName.Text;
spData.SetParam(txtParam1.Text,SqlDbType.VarChar,txtParamValue1.Text);
spData.SetParam(txtParam2.Text,SqlDbType.VarChar,txtParamValue2.Text);
spCollection.add(spData);
if (DataAccessLayer.Execute.ExecuteSps(spCollection,connection))
MessageBox.Show("Successfully executed");
}
}
catch(Exception exc)
{
return false;
}
}

Весь код слоя приложения находится в файле CallingAPP.zip.

{К содержанию}

Время кода

readonly поля и константы

ЯЗЫК: C#
АВТОР: Чужа В.Ф.,
dotnetgrains.sql.ru

Различие между readonly полями и константами состоит в том, что константа при компиляции в сборке заменяется на своё значение, а поле только для чтения заменяется на своё значение уже при выполнении программы. Отсюда вытекает вот такой интересный код:

using System;

namespace hDrummer.ReadOnlyFields
{
class clReadOnlyFields
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(clReadOnly.w.W.ToString());
Console.WriteLine(clReadOnly.year);
}
}

class clReadOnly
{
public static readonly Man w = new Man(79.88F);
public const int year = 2004;
// так делать нельзя!
//public const Weight w1 = new Weight(79.88F);
}

class Man
{
private float w;
public Man(float w)
{
this.w = w;
}
public float W
{
get {return w;}
set {w = value;}
}
}
}

//Вывод на экран
//79,88
//2004

На этом всё.


{К содержанию}

Форумы .Net - вопросы оставшиеся без ответа

Server too buzy
ASP.NET + ??? = WML
Описание к сборке
Убить Request
ComException ошибка на русском языке
создание базы данных и таблицы Access
ADO .NET
Parametr fields в Crystal Reports
Как заблокировать Windows Toolbar?



На этом тридцать второй выпуск .Net Собеседника закончен.
До следующего номера.


Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения и замечания.


Рассылки Subscribe.Ru
.Net Собеседник - Новости мира Net, C#, ASP.Net

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.dotnetgrains
Отписаться

В избранное