اموزش طراحی با asp.net قسمت 3 | Factory DbProvider
در ادامه قسمت قبلی اموزش طراحی وب سایت با asp.net به بحث Factory DbProvider پرداختیم در پست به ادامه این اموزش میپردازیم.
برای استفاده از ھر نوع پايگاه داده کافی است نام (Key) آن را بازيابی کنيد. حال اين متغير Pr خودش متد ھای مختلفی دارد.که در جدول زير با موارد قبلی مقايسه شده است:
آنچه از اين جدول بر می ايد :مثلا اگر نوع شی ما Connection باشد به جای اينکه متغير ھا را از نوع SqlConnection تعريف کنيم آنھا را از نوع DbConnection تعريف می کنيم و متد ايجاد آن ر CreateConnection() است.
مثلا در زير من يک Connection ايجاد کردم : خودش متد ھای مختلفی دار وب سایت ایجاد میکند.که در جدول زير با موارد قبلی مقاياسه شده است:
Dim con As DbConnection = pr.CreateConnection
=con.ConnectionString
ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
که قبلا اين کار را می کرديم:
ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
(Dim con As New SqlConnection(cs
ولی قبلا تنھا برای Sql کار می کرد ولی حالا برای ھمه نوع پايگاه داده در سایت نیز کار ميکند.
من Query خود را نيزبه ھمراه فضای نام مربوط به Factory در AppSetting نوشتم تا در اينجا از آن استفاده کنم:
<appSettings>
<add key=”factory” value=”System.Data.SqlClient”/>
<add key=”customerQuery” value=”SELECT * FROM customer”/>
</appSettings>
حال برای تعريف Command مثل Connection عمل می کنيم:
()Dim cmd As DbCommand = pr.CreateCommand
(“cmd.CommandText = ConfigurationManager.AppSettings(“customerQuery
که در خط دوم آن را از WebConfig بازيابی کرديم. پس تابع ما به صورت زير است:
Public Function agnostic() As DbDataReader
(“Dim factory As String = ConfigurationManager.AppSettings(“factory
(Dim pr As DbProviderFactory = DbProviderFactories.GetFactory(factory
Dim con As DbConnection = pr.CreateConnection
con.ConnectionString =
ConfigurationManager.ConnectionStrings(“aaa”).ConnectionString
()Dim cmd As DbCommand = pr.CreateCommand
(“cmd.CommandText = ConfigurationManager.AppSettings(“customerQue
cmd.Connection = con
()con.Open
()Dim reader As DbDataReader = cmd.ExecuteReader
Return reader
()con.Close
End Function
دقت کنيد که مقدار برگشتی ما ھم نبايد مثل قبل از نوع SqlDataReader باشد و آن را از نوع DbDataReader تعريف می کنيم.
اگر می خواھيد يک Component از آن بسازيد قبل از ھر چيز بايد موارد لازم را در AppSetting فايل WebConfig تعريف کنيد…………….مثل نام Factory ھا و Query ھا وحتی رشته ی اتصال.سپس می تونيد کلاس آن را به طور مجزا در طراحی اختصاصی خود در نظر بگیرید به صورت زير بنويسيد:
Imports Microsoft.VisualBasic
Imports System.Data.Common
Namespace comp
Public Class agnostic
Private fact_name As String
Private fact_query As String
Private fact_con As String
Private factory As String
Private pr As DbProviderFactory
Private con As DbConnection
Private cmd As DbCommand
Private reader As DbDataReader
Public Property AppSettings_factoryname() As String
Get
Return fact_name
End Get
Set(ByVal value As String)
fact_name = value
End Set
End Property
Public Property connectionstring_name() As String
Get
Return fact_con
End Get
Set(ByVal value As String)
fact_con = value
End Set
End Property
Public Property AppSettings_queryname() As String
Get
Return fact_query
End Get
(Set(ByVal value As String
fact_query = value
End Set
End Property
Public Function agnostic() As DbDataReader
factory =
(ConfigurationManager.AppSettings(AppSettings_factoryname
(pr = DbProviderFactories.GetFactory(factory
con = pr.CreateConnection
con.ConnectionString =
ConfigurationManager.ConnectionStrings(connectionstring_name).ConnectionStrin
g
()cmd = pr.CreateCommand
cmd.CommandText =
(ConfigurationManager.AppSettings(AppSettings_queryname
cmd.Connection = con
()con.Open
()reader = cmd.ExecuteReader
Return reader
()con.Close
End Function
End Class
End Namespace
و برای استفاده کد زير را بنويسيد:
Imports System.Data.Common
Imports comp.agnostic
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Load
Dim reader As DbDataReader
Dim a As New comp.agnostic
“a.AppSettings_factoryname = “factory”
“a.AppSettings_queryname = “customerquery”
“a.connectionstring_name = “aaa”
()reader = a.agnostic
While reader.Read
(Response.Write(reader(0)
End While
End Sub
End Class
برای آب و رنگ دادن به اين کلاس می توانيد آن را به صورت کنترل ھای سفارشی به فايل Assembly تبديل کرده و کامپايل کنيد و Dll آن را به برنامه اضافه کنيد و سپس از آن استفاده کنيد.
حالا که شما به واسطه ی کلاس dbproviderFactory با Component و کلاس ھا آشنا شديد بھتر است بحث Component در اتصال و مديريت پايگاه داده را بيشتر پی بگيريم .ادامه ی اين موضوع را با عنوان Data Components
پی می گيريم.
دیدگاهتان را بنویسید