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

 

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

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

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

Однако, если разделить код на компоненты и организовать их взаимодействие при помощи универсальных интерфейсов типа DakiSct. Daialuh'c. iludaRvadei и вам потребуется изменить код конкретных компонентов.
Рассмотрим два примера, использующих такой метод. В первом примере мы создадим функцию, которая внутренне использует поставщик SQL Client .N-Data Provider, но возвращает данные посредством универсального интерфейса DataTable. Затем мы обсудим, как изменить функцию для использования другого поставщика, не затрагивая вызывающий ее код. Во втором примере реализован этот же подход, но задействована функция, возвращающая объект DataAdapter средствами универсального интерфейса
Следующий фрагмент кода вызывает функцию GetOrdersForCustomer, принимающую строку со значением столбца f .uo>mu-ril.> и возвращающую объект Data-Table с заказами указанного клиента. Внутренне функция использует параметризованный объект SqlDataAdapter.
Visual Basic .NET
Dim strCusiomerlD As String = "A1.FKI" Dim tbIOrders As DataTable
ibifirdtHs = ¦¦¦¦¦¦.¦- :- . )
Приложение А Прочие поставщики данных .NET
581
Private Function GstOrdBr-sForCustamerfCustciner ID As String) As DataTable Dim strSQL, strConn As String
StrSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date " & _
"FROM Orders WHERE CustomerlD = iCustomerlD" strConn = "Data Source=(local)\N8tSDK;" & _
"Initial Catalog=Northwind;Trusted_Connectton= Yas;" Dim da As New SqlDataAdapter{strSQL, strCo nn) Dim param As SqIParameter
param = da.SelectCommand. Parameters. Add("@> CustomerlD", SqIDbType.NChar, 5} pa ran. Value = CustomerlD Dim tbl As New OataTabla("Orders") da.Fill(tbl) Return tbl End Function
Visual C# .NET
string sirGustane-ID = "ALFKI ': DataTable tblOrders;
tbIOrders = GetOrdersForCustomerfstrCustomerlD );
private DataTable GetOrtfa'sForCustocierJstring CustomerlD) {
string strSQL, strConn;
strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date " +
"FROM Orders WHERE CustomerlD = eCustomerlD"; strConn = "Data Source=(local)\\NetSDK;" +
"Initial Catalog=Horth«ind;Trusted_Connection= Yes;"; SqIDataAdapter da = new SqlDataAdapter(str SQL, strConn); SqIParameter param;
param = oa.SelectCommand.Parameters.Add( "* CwstomorTO", SqIDbType.NChar, 5);
iparam. Value = CustomerlD;
DataTable tbl = new DataTableC'Orders");
da.Fill(tbl);
return tbl;
}
Как уже говорилось, вам может потребоваться модифицировать приложение для взаимодействия с другими СУБД. Функция ШОг^Й^&гСдаШ^внутренне работает с поставщиком SQL Client MKT Data i'nnkkг. но для параметра и возвращаемого значения использует универсальные типы данных — string и DataTable. Таким образом, функцию можно переписать для другого поставщика .NET. не изменяя код с объектом DataTable. Вот как я откорректировал код функции GetOrders-не трогая ее
Visual Basic .NET
Private Function GetOrdersForCustofflerCCastoiuar ID As String) As DataTable
.Dim strSQL, strConn As String
istrSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date 11 & _ "FROM Orders WHERE CustomerlD = :CustomerlD"
582 Приложения
strConn = • source=MyOracleDatabaseAlias;" 4 _ "User ID=MyUserID;Password=MyPassword;"
Dim da As New ЙГЙО; 83bt.aAll3pter{ 31 rSC'L, st rConn)
Dim pa ram As OraclsPeramster
param = da.SalectCommand.Parameters.Add(": CustomerlD", OracleType.Char, 5)
param.Value = CustomerlD
Dim tbl As New DataTable< 'Orders")
da.Fill(tbl)
Return tbl End Function
Visual C# .NET
private DataTable G^tOrdersForCustomer (st'"irig CustomerlD)
t!
string strSQL, strConn;
strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date " +
"FROM Orders WHERE CustomerlD = : CustomerlD"; strConn = "Data Source=MyOracleDatabaseAlias;" +
"User ID=MyUserID;Password=MyPassword;": OracleDataAdapter da = new OracleDataAdapt er(strSQL, strConn); OracleParameter param;
param = da.SelectCommand,Parameters.Add(": CustomerlD", OracleType. Char, 5);
param. Value = CustomerlD;
DataTable tbl = new DataTableC"Orders");
da.FillCtbl);
return tbl;
i!
Еще один способ основан на том, что код доступа к данным возвращает объекты при помощи универсальных ши<:рфс>it I т. поддерживаемых различными поставщиками Nil. Так, можно написать функцию, создающую экземпляр объекта St/tlfittfi-Ad<tph"> и возвращающую его средствами универсального интерфейса li)ld'hrf,t-Adapter.
Visual Basic
Dim daOrders As IDbOataAdapter = GetOrdersAdap ter() Dim strCustomerlD As String = "ALFKI" Dim param As IDbDataParameter
param = CType(daOrders. SelectCommand. Parameter s{0), IDbDataParameter) param. Value = StrCustomerlD Dim ds As New DataSetO
Dim tblOrders As DataTable = ds.Tables.Add("0r ders") daOrders,Ftll(ds)
Private Function GetOrdersAdaptert) As LC-bOata Adapter Dim strSQL, strConn As String
strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date " & _
"FROM Orders WHERE CustomerlD = ©CustomerlD" strConn = "Data Source=(local)\NetSDK; " & _
Приложение А Прочие поставщики данныых .NET
583
"Initial Catalog=Northwind;Trusted_Connection= Yes;" Dim da As New SqlDataAdapter(strSQL, strCo nn) da.TableMappings.Add("Table", "Orders")
Предыдущая << 1 .. 242 243 244 245 246 247 < 248 > 249 250 251 252 253 254 .. 260 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100