Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Вебмастеру -> Сеппа Д. -> "Microsoft ADO.NET" -> 55

Microsoft ADO.NET - Сеппа Д.

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 49 50 51 52 53 54 < 55 > 56 57 58 59 60 61 .. 260 >> Следующая

Как при помощи объекта Command получить данные из параметров вывода? У объекта Parameter есть свойство Direction, принимающее значения из перечисления ParameterDirection: ReturnValue. Input, fnputOutputu Output. Значение свойства Direction по умолчанию — Input. Чтобы получить от хранимой процедуры GetCus-tomer следует задать значение свойства Direction для параметров,
которых не ограничивается только вводом.
Хранимая процедура сообщает об успешности выполнения при помощи возвращаемого параметра. Таким образом, наш фрагмент кода должен просмотреть значение возвращаемого параметра и определить, успешно ли найден в нам клиент:
Visual Basic .NET
Dim гп As New CleDbConnectioo(strConn) cn.0pen()
Dim cmd As OleDbConimand = en CreateCoariandO
With cmd
. CommandText = "{? = CALL GetCustomer(7, ?, ?, ?)}"
Parameters.Add("@RetVal", OleDbType.Integer)
ГЛАВА 4 Выполнение запросов к базе данных 99
. Parameters. Add("eCustoirerlD", OleObType.WChar, 5) . Parameters.AddCeCompanyMame1, OleDbType. VarWChar, 40) . Parameters. Add("SCantactNa.me'\ OleDbType. VarWChar, 30) .Parameters.Add("@ContactTitleM, OleDbType.VarWChar, 30)
. Para(Keters("*CoiitactTitl8"). Direction = Pa rame ter Direct ion. Output
= =
Par ameters( "sCoinpanyName" ¦. D.i і auti on = ParameterDi reotlon.Output
=
, cxectiteSonQueryC )
If Convert. ToInt32(. Parameter^ "igiRetVal"). Value) = 0 Then Console.WriteLineC. ParametersC'eCompanyName").Value)
Else
Console.WriteLineC'Customer not found") End If End With
Visual C# .NET
OleDbConnection cn = new OleDbConnection(strConn); en.Open();
OieDbCommand cmd = cn.CreateCommand( );
cmd.CommandText = "{7 = CALL GetCustomer(?, ?, ?, ?)}";
cmd. Parameters.Add{"@RetVal", OleDbType.Integer); cmd. Parameters. Add("!5'Cust(4iieri:>", OleDbType.WCfiar. 5); cmd.Parameters.Add<"§CompanyName", OleDbType.VarWChar, 40); cmd. Parameters. ACdC'eContactName". OleDbType. VarWChar, 30) ; cmd.Parameters.Add("iContactTitle"r OleDbType.VarWChar, 30);
0*6, Pa.'amstsref'iCoa^s/rtritls'']. Direction = Parair-ete rDi rection. Outcet ; cmd.Fa і ameters["@RetVal"].Direction = ParameterDirect ion.ReturnValue: cmd . Parametersf "®CustomerID"]. Value = "ALFKI";
cmd.Parameters["@CompanyName"].Direction = ParameterDirection.Output; ¦cmd.Pararnetersf"@ContactName"].Direction = ParameterDirection.Output;
cmd, ExecuteNonQueryO;
if (Convert ToInt32(cmd. Parameters^ "©RetVal" Lvalue'! == 0) Console, WriteLine(cmd. Parameters["@CompanyName" ]. Value) ;
else
Console.WriteLineC'Customer not found"),
Выполнение запроса в транзакции
У объекта Command есть свойство Transaction, значение которого следует задать, если необходимо, чтобы команда выполнялась в транзакции. Из предыдущей главы вы знаете, как создать объект Transaction с помощью методаBeginTmnsactionобъекта
100 Часть II Подключаемся: использование поставщика данных .NET
Command. Следующий фрагмент кода показывает, как выполнить команду в этой транзакции:
Visual Basic .NET
cn.OpenO
Dim txn As OleDaTransaction = cn. BeginTransactlonO
Dim strSQL As String = "INSERT INTO Customers (...) VALUES (...)"
Dim cmd As New 01eDbCommand(strSQL, cn, txn)
Dim intRecordsAffected As Integer = cmd.ExecuteNonOuary()
If intRecordsAffected = 1 Then
Console.WriteLine("Update succeeded")
txn.Commit()
Else
¦'Предполагаем, что значение intRecordsAffected = О Console.WriteLineC"Update failed") txn. Rollback^) End If
Visual C# .NET
cn.OpenO;
CleDbTransaction txn = cn.BeginTransaction();
string StrSQD = "INSERT INTO Customers (...) VADUES (...)"
OleDbCommand cmd = new 01eDbCommand(strSQL, on, txn);
int intRecordsAffected = cmd.ExecuteNonQueryO;
if (intRecordsAffected == 1)
i
Console.WriteLineC"Update succeeded");
txn.CommitO;
}
else
{
//Предполагаем, что значение = О Console.WriteLine("Update failed"); txn. RollbackO;
i
He забудьте вызвать метод Commit или ИиШшск объекта Transaction (в мости от того, требуется ли сохранить или отменить изменении, выполненные в ходе транзакции).
Создание объектов Command в Visual Studio .NET
Visual Studio .NET экономит вам время, усилия и избавляет от головной боли, позволяя легко и просто создавать и конфигурировать объекты Command. Давайте рассмотрим возможности Visual Studio периода разработки, предназначенные для работы с объектами Command.
ГЛАВА 4 Выполнение запросов к базе данных
101
Перетаскивание с панели инструментов
Главная отправная точка создания объектов Command в Visual Studio :N1T — нель инструментов. На вкладке Data имеются объекты (jnnmandяч'л всех пост;;и щиков данных .NET. Чтобы создать объект OleDbCommand, просто перетащите элемент < >hd )1>(У1!н,ч/а,'и\ с панели инструментов область проектирования или «, панель компонентов этой области и отпустите его. В панели компонентов области проектирования появится новый объект Command (рис. 4-1).
! WimlfflMlAppliCilllDhl
idMJriihi -N| Г Idrajgn;] fnrml-vh [Itasigp]*
ш ?l- -r.-M-n.-rUBI
ШЩШ 01е№Согп>гм
J ГСги йтЛург Teit ';¦ Ccnr^ttMn (TO«)
Предыдущая << 1 .. 49 50 51 52 53 54 < 55 > 56 57 58 59 60 61 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100