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

 

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

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

Сеппа Д. Microsoft ADO.NET — М.: Русская Редакция, 2003. — 640 c.
ISBN 5-7502-0223-2
Скачать (прямая ссылка): mcrsftado2003.pdf
Предыдущая << 1 .. 241 242 243 244 245 246 < 247 > 248 249 250 251 252 253 .. 260 >> Следующая

"Dser lD=HyUserID;Password=HyPasswor d;";
OracleConnection cn = new GracleConnection(str Conn) ; OracleCommand cmd = new OracleCommandCGetNumO rders", cn); crod.CommandType = CoromandType.StoredProcedure;
OracleParameter param;
578 Приложения
parse = cad. Paraeetars. AddCpCustoirerlD", Orac leType.Char, 5); param.Value = "AIJ-KI"
param = cmd. Parameters. Add("pNumOrders", Oracl eType.Int32) ;
param.Direction = ParameterDirection. Output:
cn.OpenO;
cmd. ExecuteNonQueryO; Console.WriteLine(param.Value); cn.Close();
Чтобы избежать нагрузки по преобразованию поставщиком этого кода в соответствующий синтаксис Oracle, не изменяйте значение свойства CommandType по умолчанию, Text,n задайте свойству Command-Text запрос в таком формате:
BEGIN GetNumOrders(:pCustonerID, :pNumOrders); END;
Выборка данных из курсоров REF
Поставщик Oracle Client .NET Data Provider позволит выбирать посредством вызова хранимой процедуры данные из нескольких курсоров REF. Скажем, у вас есть такое определение пакета Oracle:
CREATE PACKAGE PackCursorTest AS TYPE curOrders IS REF CURSOR RETURN OrdersKR OWTYPE; TYPE ourDetails IS REF CURSOR RETURN Order_D etallsJSROWTYPE; PROCEDURE OrdersAndDetailsForCustomer
(pCustomerlD IN CHAR, pQrders OUT CurOrder s, pDetails OUT curDetails);
END;
CREATE PACKAGE ¦: PackCursorTest AS PROCEDURE OrdersAndDetailsForCustomer
(
pCustomerlD IN CHAR, pOrders OUT curOrders,
pDetails OUT curDetails
)
AS
BEGIN
OPEN pOrders FOR SELECT * FROM Orders WHER E CustomerlD = pCustomerlD; OPEN pDetails FOR SELECT * FROM Order_Deta lis WHERE OrderlD IN (SELECT OrderlD FROM Orders WHERE Custom erID = pCustomerlD);
END; END;
Следующий фрагмент кода вызывает хранимую процедуру и помещает содержимое обоих курсоров REF в один объект DataSet:
Visual Basic NET
Dim StrConn. strSOr As String
strConn = "Data Source=HyOracleDatabaseAlias;" 4
"User ID=MyUserID;Password=MyPasswor d;" Dim or: As New OracleConnection(strConn)
Приложение А Прочие поставщики данных .NET
579
stFSQL = "PacKCursorTest.CrdarsAndDetailsforCusTomer" iDim cmd As New OracleCommand(strSQL, en) CBd.ComandType = CommandType.StoredProcedure IDim pa ram As OracleParameter
parens = cniu. Parameters.Add( 'pCuslnmerTD". Orac leType.Cnar. 5) =
param = cmd.Parameters.Add("pOrders", OracleTy pe.Cursor) param.Direction = ParameterDirectlon.Output param = cmd.Parameters.Add{"pDetails", OracleT ype.Cursor) param.Direction = Pa rams terDi r ec t)on.Output
Dim da As New OracleDataAdapter(cmd)
da.TableMappings.Add("Table", "Orders")
da.TableMappings. Add( "Table"!", "Order_Details")
Dim ds As New DataSetC)
Dim tbl As DataTable
da.Fill(ds)
For Each tbl In ds,Tables
Console.WriteLine(tbl.TableName & " now has " & tbl.Rows.Count & " row(s)")
Next tbl
Visual C# .NET
string strConn. strSQL;
strConn = "Data Source=MyOraoleDatabaseAlias;" +
"User ID=MyUserID;Password=HyPasswor d;"; OracleConnection cn = new OracleConnection(str Conn); =
OracleComnsand cmd = new OracleComi»and(strSOL. cn); emd.CommandType = CoiwandType. Sto redP rocedu ro; OracleParameter param;
param = cmd.Parameters.Add("pCustomerID", Orac leType.Char, 5): param.Value = "ALFKI";
param = cmd. Parameters. Add("pOrders"( OracleTy pe.Cursor);
param Direction = ParameterDirection.Output
param
param.Direction = PararoeterDirection.Output;
OracleDataAdapter da = new OracleDataAdapter(c md);
da.TableMappings.Add("Table", "Orde rs");
da. TableMappings.Add("Tablel", "Order_Details");
DataSet ds = new DataSet<);
da.Fill(ds);
foreach (DataTable tbl in ds.Tables5
Console.uJriteLir.e(tbl.TacleNace + now has + tbl.Rows.Count + " row(s)"):
580 Приложения
Получение информации схемы БД
У поставщика Oracle Client .NET Data Provider нет собственных функций для получения информации схемы, например имен таблиц и столбцов, из БД Oracle. Тем не менее вы сможете обращаться к словарю Oracle и получать нужные сведения. Так. следующие запросы возвращают из БД список таблиц и столбцов:
SELECT TABLE..NAHE FROM USER_TABLES
SELECT TABLE.NAME. COLUMN.NAME FROM USER_TAB_COLUHKS ORDER BY TABLE..NAME
Подробнее об использовании словаря данных Oracle — в документации на Oracle.
Проблемы, общие для поставщиков данных .NET
Поставщики данных .N IT обеспечивают повышенную производительность и предоставляют расширенные возможности управления, поскольку каждый из них можно настроить под потребности конкретной СУБД, на работу с которой он рассчитан. Тем не менее переход к отдельным данных вызвал
в среде разработчиков некоторое замешательство.
Создание кода, независимого от поставщика
Предположим, вы создали приложение, использующее поставщик SQL Client MET Data Provider. Время не стоит на месте, и в соответствии с потребностями клиента вы решили модифицировать приложение так, чтобы оно могло работать и с БД SQL Server, и с БД Oracle. Чем больше кода в приложении основано на поставщике SQL Client .NET Data Provider, тем больше придется менять.
Предыдущая << 1 .. 241 242 243 244 245 246 < 247 > 248 249 250 251 252 253 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100