برای برقراری ارتباط با پايگاه معمولا از عبارت زير استفاده می شود:

Dim ObjConn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; DataSource=e:\db\users.mdb")
که قسمت DataSource آدرس فايل پايگاه داده است که در اينجا يک بانک Access است. همانگونه که ملاحظه می کنيد از رشته ارتباطی يا Connection String بعنوان پارامتر استفاده شده است و بوسيله متد Open ارتباط باز می شود:

objConn.Open()
لازم به توضيح است که در پايان کار بوسيله متد Close ارتباط را خاتمه می دهيم.

بمحض ارتباط با پايگاه داده می توان دستورات را به آن فرستاد. اين کار معمولا بوسيله شی OleDbCommand انجام می شود. جهت انجام اين کار می توان يک دستور SQL يا نام يک روال ذخيره شده (Stored Procedure) را مشخص نمود و بنا به مقتضيات می توان اعمال مختلفی را روی پايگاه پياده نمود:

Dim objCommand As New OleDbCommand ( "Select * From users", objConn )
ملاحظه می کنيد که کلاس Command از دو پارامتر رشته SQL و نام رشته ارتباطی برای فرستادن دستورات به پايگاه داده استفاده می کند. برای مثال آنچه را که در عبارت فوق ديديد می توان به بخشهای کوچکتر زير تقسيم کرد.

ابتدا تعريف شي:

Dim objCommand As New OleDbCommand()
سپس نسبت دادن آن به رشته ارتباطی جهت برقراری ارتباط پايگاه:

objCommand.Connection= objConn
مشخص کردن عمليات مورد نظر بوسيله دستورات SQL:

objCommand.CommandText="Select * From Users"
+ نوشته شده توسط امین حاجی علیزاده در شنبه بیست و یکم بهمن ۱۳۸۵ و ساعت 11:41 |
<html>
<head>
<title>نمونه مثال براي آشنايي بيشتر</title>
</head>
<body>
<script language="vbscript">
MSGBOX("به سايت بهزاد خوش آمديد ")
</script>
<p align="center"><font face="B Tahoma" size="2">به نحوه ي قرار گيري كدهاي
اسكريپت<span lang="en-us"> ,</span> در بين كدهاي اچ تي ام ال توجه كنيد<br>
<br>
</font>
<a target="_blank" href="http://www.khodkar.com/in.php?id=59">
<img src="http://www.khodkar.com/button.php?id=59" border=0 /></a></p>
</body>
</html>
+ نوشته شده توسط امین حاجی علیزاده در یکشنبه پانزدهم بهمن ۱۳۸۵ و ساعت 11:59 |
وب يکی از مهمترين و در عين حال جوان ترين سرويس های اينترنت است که در مدت زمانی کوتاه توانسته است در کانون توجه تمامی استفاده کنندگان اينترنت قرار بگيرد و منشاء تحولات عمده ای در حيات بشريت باشد. در گذشته از وب صرفا" به منظور عرضه اطلاعات استفاده می گرديد و کاربران از آن به عنوان يک کنابخانه الکترونيکی بزرگ و در جهت يافتن اطلاعات مورد نياز خود استفاده می کردند. وضعيت فعلی وب نسبت به گذشته دستخوش تحولات فراوانی شده است و هم اينک از آن به عنوان بستر ارتباطات ، مبادله اطلاعات ، عمليات تراکنشی نظير فعاليت های تجاری ، اجتماعی ، سياسی ، آموزشی و فرهنگی استفاده می گردد . نرم افزار و دنيای برنامه نويسی يکی ازعرصه هائی است که بدون شک بيشترين تاثير را از اينترنت پذيرا بوده است ( پرداختن به مقوله تاثير اينترنت بر دنيای برنامه نويسی و يا تاثير نرم افزار بر اينترنت خارج از حوصله اين مقاله است ). شرکت های عظيم نرم افزاری با لحاط نمودن جايگاه برجسته اينترنت ، اقدام به ارائه تکنولوژی ها و معماری های متفاوتی در جهت طراحی و پياده سازی برنامه های کامپيوتری با بهره گيری از زيرساخت اينترنت نموده اند . ASP.NET : گزينه ای برای طراحی و پياده سازی برنامه ها و سرويس های وب به منظور پاسخ به خيل عظيم نيازهای موجود با توجه به تسهيلات ارائه شده توسط اينترنت ، نسل جديدی از برنامه های کامپيوتری با نام "برنامه های وب " مطرح و در اين رابطه تاکنون تکنولوژی های متفاوتی توسط شرکت های عظيم نرم افزاری ارائه شده است . ASP.NET يکی از تکنولوژی های موجود در اين زمينه است . در واقع ، ASP.NET فريمورک برنامه نويسی شرکت مايکروسافت برای طراحی و پياده سازی برنامه ها و سرويس های وب است که خود بخشی از پلت فرم دات نت محسوب می گردد . ASP.NET با دارا بودن مجموعه ای گسترده از اشياء که دارای اينترفيس های ساده برنامه نويسی می باشند و بهره گيری از يک محيط ترجمه شده شی گراء ، امکان پردازش های ساده تا پيچيده را با حداقل کد ممکن فراهم می نمايد. چرا ASP.NET ؟ زمانی که شرکت مايکروسافت نسخه اوليه فريمورک دات نت را در جولای سال 2000 برای اولين مرتبه به نمايش گذاشت ، برای اکثر طراحان و پياده کنندگان برنامه های وب مشخص گرديد که می بايست در انتظار تحولات چشمگيری در اين عرصه بود .ASP نسخه شماره سه ( تکنولوژی قبلی شرکت مايکروسافت برای پياده سازی برنامه های وب ) ، امکانات گسترده و انعطاف لازم به منظور ايجاد سايت های پويا را در اختيار علاقه مندان قرار می داد. تاکنون صدها کتاب و هزاران مقاله با موضوع ASP نوشته شده است . ماحصل تمامی تلاش های انجام شده در اين رابطه، تسهيل در امر طراحی و پياده سازی وب سايت های پويا و برنامه های وب بود . چيزی که ASP نداشت ، يک فريمورک برنامه نويسی بود. هر چيزی که در ASP انجام می شد با رويکرد کدنويسی بود و برنامه نويسان برای انجام هر کاری ملزم به نوشتن کدهای مورد نياز بودند. ASP.NET با هدف غلبه بر محدوديت فوق طراحی شده است . ASP.NET يک فريمورک برنامه نويسی است که برروی CLR ايجاد و می توان از آن به منظور ايجاد برنامه های قدرتمند وب استفاده نمود .يکی از اهداف اساسی طراحی ASP.NET ، برنامه نويسی ساده تر و با سرعت بيشتر از طريق کاهش حجم کدهای مورد نيازی است که برنامه نويسان ملزم به نوشتن آنان می باشند.برنامه نويسی declarative ، مجموعه ای گسترده از کنترل های سرويس دهنده به همراه رويدادهای مربوطه ، يک کتابخانه کلاس بزرگ و ابزارهای پياده سازی کاملا" حرفه ای نظير ويژوال استوديو دات نت ، از جمله ويژگی های شاخص ASP.NET محسوب می گردد( يک جهش کاملا" ملموس نسبت به وضعيت گذشته ). کنترل های سرويس دهنده ، معماری postback ، حمايت از viewstate به اضافه استفاده از کد ترجمه شده و مدل برنامه نويسی مبتنی بر رويداد ، جملگی از مهمترين دستاوردهای ASP.NET محسوب می گردد که نويد ايجاد و اشکال زدائی سريع برنامه های وب را در اختيار پياده کنندگان قرار می دهد . محيط برنامه نويسی ASP.NET بيش از بيست و پنج زبان نظير VB.NET ، سی شارپ و Jscript.NET را حمايت می نمايد. به عنوان يک محيط شی گراء ، فريمورک دات نت بيش از 4500 کلاس را ارائه می نمايد که از آنان به منظور انجام عمليات متفاوتی در ارتباط با اسناد XML ، دستيابی به داده ، توليد تصاوير ، مونيتورينگ ، ثبت تراکنش ها و ساير عمليات ديگر استفاده می گردد . کلاس ها مجموعه ای گسترده از اشياء ، خصلت ها و متدها را ارائه می نمايند که می توان از آنان به منظور پياده سازی برنامه های وب قدرتمند استفاده بعمل آورد. عليرغم اين که کدها ترجمه می گردند ، ASP.NET به صورت اتوماتيک هر گونه تغيير در کدها را تشخيص و به صورت پويا اقدام به ترجمه فايل های مورد نياز نموده و آنان را برای استفاده مجدد به منظور پاسخگوئی به درخواست هائی آتی ، ذخيره می نمايد . ترجمه پويا ، اين اطمينان را ايجاد می نمايد که برنامه بهنگام بوده و کد ترجمه شده با سرعت مناسبی اجراء می گردد. در زمان درخواست يک صفحه و ترحمه آن برای اولين مرتبه ، يک تاخير کوتاه را شاهد خواهيم بود . پاسخ به درخواست های آتی از طريق نتايج ترجمه شده و يا نسخه های Cache شده صفحات انجام خواهد شد و نتايج با سرعت بمراتب بيشتری برای سرويس گيرندگان ارسال می گردد . با توجه به ويژگی های منحصربفرد ASP.NET ، تاکنون از آن به منظور پياده سازی برنامه های وب در سايت های معتبر متعددی استفاده شده است : شرکت Dell Merrill Lynch بازار بورس لندن خطوط هواپيمائی JetBlue NASDAQ USA Today Home Shopping Network Weight Watchers Bank One Century 21 و هزاران سايت ديگر متعلق به شرکت ها و موسسات خصوصی و عمومی چرا ASP.NET 2.0 ؟ هم اينک نسخه شماره دو ASP.NET در راه است . شايد اين سوال برای شما مطرح شده باشد که ASP.NET 1.x دارای چه محدوديت هائی است که ضرورت ايجاد نسخه شماره دو آن احساس شده است ؟ در پاسخ می بايست به اين نکته اشاره نمود که طراحی و پياده سازی هر نرم افزار مستلزم استفاده از منابع متفاوت، انعطاف لازم و صرف زمان مناسب است . بهينه سازی هر يک از شاخص های فوق ، مهمترين دليل ارتقاء به رويکردهای مدرن برنامه نويسی است . در ASP.NET 2.0 انجام هر کاری با سهولت بمراتب بيشتری نسبت به گذشته انجام می شود. صفحات master ، ويژگی themes و skins ، ارائه امکانات مناسب در جهت حمايت از دستگاه های سرويس گيرنده متفاوت ، ارائه چهل و پنج کنترل سرويس دهنده جديد شامل کنترل های سرويس دهنده پيشرفته منبع داده ، کنترل های navigation ، کنترل های login ، کنترل های web part ، کنترل های لازم به منظور ايجاد منو و treeview ، رويکرد جديد به data grid ، ارائه امکانات و ابزارهای لازم در جهت مديريت بهينه برنامه ها ، حمايت از پردازنده های 64 بيتی ، کاهش حجم کد نوشته شده به ميزان هقتاد درصد ، نمونه هائی از امکانات و پتانسيل های جديد ASP.NET 2.0 می باشد. با استفاده از ASP.NET 2.0 پياده کنندگان برنامه های وب می توانند کارهای پيچيده متعددی را بدون نياز به نوشتن کد انجام دهند . در بخش دوم به بررسی برخی از مهمترين ويژگی های ASP.NET 2.0 خواهيم پرداخت .
+ نوشته شده توسط امین حاجی علیزاده در یکشنبه هشتم بهمن ۱۳۸۵ و ساعت 13:12 |
 در اين بخش به بررسی ساير عمليات متداول مرتبط با فايل ها و دايرکتوری ها و يک نمونه مثال کاربردی خواهيم پرداخت .

حذف يک دايرکتوری
 برای حذف يک دايرکتوری می توان از متدهای Directory.Delete و يا DirectoryInfo.Delete استفاده نمود. کد زير نحوه انجام اين کار را نشان می دهد :

حذف يک دايرکتوری

<%@ Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%
Directory.Delete("C:\Test")
Dim dir As DirectoryInfo
dir = New DirectoryInfo("C:\Test")
dir.Delete 

%>

توضيحات
در صورتی که قصد حذف يک دايرکتوری را داشته باشيم که موجود نمی باشد ، با يک خطای  DirectoryNoFound ، مواجه خواهيم شد. اگر قصد حذف يک دايرکتوری را داشته باشيم که در آن فايل و يا دايرکتوری های ديگری موجود می باشد، با يک خطای IOException مواجه خواهيم شد. برای حل اين مسئله ، می توان از نسخه overload متد Delete استفاده نمود. در چنين مواردی در زمان استفاده از متد Delete ، می بايست در رابطه با حذف و يا عدم حذف فايل ها و يا دايرکتوری های موجود در يک دايرکتوری  تعيين تکليف شود.  کد زير نحوه انجام اين کار را نشان می دهد :

حذف يک دايرکتوری با تعيين تکليف در رابطه با فايل ها و دايرکتوری ها موجود در آن 

<%@ Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%
Directory.Delete("C:\Test",True)
Dim dir As DirectoryInfo
dir = New DirectoryInfo("C:\Test")
dir.Delete (True)

%>

حذف يک فايل
برای حذف يک فايل می توان از متدهای File.Delete و يا FileInfo.Delete ، استفاده نمود . کد زير نحوه انجام اين کار را نشان می دهد :

حذف يک فايل

<%@ Language="VB" %>
<%@ Import Namespace="System.IO" %>
<%
File.Delete("C:\Test.txt")
Dim file1 As FileInfo
file1 = New FileInfo("C:\Test.txt")
file1.Delete 

%>

توضيحات
در صورتی که قصد حذف فايلی را داشته باشيم که موجود نمی باشد ، با يک خطاء و يا exception خاصی برخورد نخواهيم کرد، مگر اين که بخشی از آدرس مشخص شده در مسير ( Pathname ) وجود نداشته باشد . در چنين مواردی با خطائی از نوع DirectoryNotFoundException مواجه خواهيم شد .

خصلت ها و صفات فايل ها و دايرکتوری ها
بر روی فايل ها و دايرکتوری ها می توان عمليات مشترک و مشابهی نظير "حذف " را انجام داد . فايل ها و دايرکتوری ها دارای خصايص مشترک و مشابهی نظير تاريخ ايجاد ، نام کامل و يا صفات نيز می باشند . کلاس FileSystemInfo دارای اعضائی است که می توان آنان را در ارتباط با فايل ها و يا دايرکتوری ها بخدمت گرفت . کلاس های DirectoryInfo و FileInfo ازکلاس فوق مشتق شده اند .

خصلت های کلاس FileSystemInfo 

توضيحات Read / Write نوع  نام

 صفاتی نظير Hidden ، archive و Read-only   ، مرتبط با يک فايل را برمی گرداند .

R / W

FileAttributes Attributes

زمان ايجاد فايل و يا دايرکتوری را برمی گرداند

R / W

System.DateTime CreationTime

آخرين زمان مراجعه به فايل و يا دايرکتوری را برمی گرداند

R / W

System.DateTime LastAccessTime

آخرين زمان ويرايش يک فايل و يا دايرکتوری را برمی گرداند

R / W

System.DateTime LastWriteTime

وضعيت موجود بودن يک فايل و يا دايرکتوری را مشخص می نمايد.

R

Boolean Exists

انشعاب فايل و يا دايرکتوری را برمی گرداند ( به همراه نقطه). برای يک  دايرکتوری،انشعاب متن موجود پس از آخرين نقطه  در نام است .

R

String Extension

 نام فايل و يا دايرکتوری را متناسب با نام دايرکتوری مربوطه بر می گرداند .

R

String Name

نام کامل فايل و يا دايرکتوری را برمی گرداند .

R

String FullName

متدهای کلاس  FileSystemInfo

توضيحات  نام

حذف فايل و يا دايرکتوری

Delete

بهنگام سازی هر نوع اطلاعات cache شده( نظير تاريخ ايجاد فايل)

Refresh

وضعيت موجود بودن يک فايل و يا دايرکتوری را مشخص می نمايد.

Exists

 

مثال : ايجاد يک مرورگر  فايل و دايرکتوری
برای آشنائی با نحوه استفاده ازصفات و برخی متدها و خصلت های کلاس های DirectoryInfo و FileInfo به بررسی يک مثال کاربردی ( ايجاد يک مرورگر فايل ) ، خواهيم پرداخت . برنامه  فوق يک مسير(PathName ) را از ورودی دريافت و تمامی فايل ها و دايرکتوری ها موجود در آن را نمايش خواهد داد .

مرحله اول : تايپ کد زير با استفاده از يک ويرايشگر

ايجاد يک مرورگر فايل و دايرکتوری

<%@ Import Namespace="System.IO" %>

<script runat="server">
Sub Page_Load( sender as object, e as EventArgs)
    if not Request("dir") is nothing then
        DirName.Value = Request("dir")
   end if
End Sub
</script>

<Html dir="rtl">
<font face="Tahoma" size="3">
<h3>مرورگر فايل و دايرکتوری </h3></Font>
</html>

<form runat="server" dir="rtl">
نام دايرکتوری <input type="text" id="DirName" size="20" dir="ltr"
value="c:\program files\internet explorer" runat="server" >
<input type="submit" value="مشاهده ">
</form>

<%
dim dir as DirectoryInfo
dim anchor as string

' Get the information about the selected directory

dir = new DirectoryInfo( DirName.Value )

Response.Write("<h4>دايرکتوری های موجود در " & DirName.Value & "</h4>")

Response.Write("<table>")
Response.Write("<tr bgcolor=""#336699"" style=""border-collapse: collapse; color: #ffffff"">")
Response.Write("<td>")
Response.Write( "نام" )
Response.Write("<td>")
Response.Write( "تاريخ آخرين تغييرات" )
Response.Write("</tr></font>")

dim SubDir as DirectoryInfo

for each SubDir in dir.GetDirectories()
  anchor = "<a href='" & "FileBrowser.aspx?dir=" & SubDir.FullName & "'>" + SubDir.Name & "</a>"
  Response.Write("<tr dir=""ltr"">")
  Response.Write("<td>" & anchor & "</td>" )
  Response.Write("<td>" & SubDir.LastWriteTime & "</td>" )
  Response.Write("</tr>")
next

Response.Write("</table>")

if ( not dir.Parent is nothing ) then
anchor = "<a href='" & "FileBrowser.aspx?dir=" & dir.Parent.FullName & "'>" & dir.Parent.FullName & "</a>"
Response.Write("<p>دايرکتوری ريشه " & anchor )
end if

Response.Write("<h3>فايل های موجود در " & DirName.Value & "</h3>")

Response.Write("<table>")
Response.Write("<tr bgcolor=""#336699"" style=""border-collapse: collapse; color: #ffffff"">")
Response.Write("<td>نام فايل</td>" )
Response.Write("<td>تاريخ آخرين تغييرات</td>" )
Response.Write("<td>ظرفيت</td>" )
Response.Write("<td>وضعيت فايل</td>" )
Response.Write("</tr>")

dim f as FileInfo
dim mystr As String

for each f in dir.GetFiles()
   Response.Write("<tr dir=""ltr"">")
   Response.Write("<td>" & f.Name )
   Response.Write("<td>" & f.LastWriteTime & "</td>")
   Response.Write("<td>" & f.Length.ToString() & "</td>" )
   if ( (f.Attributes and FileAttributes.ReadOnly) <> 0 ) then
      mystr ="فقط خواندنی"
   end if
  if ( (f.Attributes and FileAttributes.Hidden) <> 0 ) then
      mystr ="مخفی"
   end if
   if ( (f.Attributes and FileAttributes.System) <> 0 ) then
       mystr ="سيستم"
   end if
   if ( (f.Attributes and FileAttributes.Archive) <> 0 ) then
       mystr ="آرشيو"
   end if
   Response.Write( "<td>" & mystr & "</td>" )
   Response.Write("</tr>")
next
Response.Write("</table>")
%>

مرحله دوم :  پس از ذخيره کد فوق در فايلی با نام FileBrowser.aspx و مشاهده آن در مرورگر ، خروجی زير را خواهيم داشت : 

+ نوشته شده توسط امین حاجی علیزاده در یکشنبه یکم بهمن ۱۳۸۵ و ساعت 12:15 |
 Data Access APIs
لايه دوم در معماری دستيابی داده  ، مكانيزم های لازم برای كار با ADO.NET ، كنترل های ASP.NET و providers را ارائه می نمايد. از امكانات ارائه شده در اين لايه می توان به منظور انجام مجموعه ای از عمليات و فرآيندهای متداول استفاده نمود . با استفاده از كنترل های متنوع منبع داده و نسبت دهی داده در ASP.NET 2.0 ،  حجم كد مورد نياز به منظور حمايت از عمليات در ارتباط با داده  كاهش و در مواردی نيز حذف می گردد .

 Connection و Commands
ADO.NET از چندين Data Provider  متفاوت برای  اتصال به بانك های اطلاعاتی ، اجرای دستورات و بازيابی نتايج استفاده  می نمايد . در ADO.NET  از شی Connection برای اتصال به يك منبع داده خاص استفاده می گردد . مثلا" در صورت استفاده از  بانك اطلاعاتی SQL Server 2000 ، می توان از شی SQLConnection به منظور اتصال به بانك اطلاعاتی استفاده نمود . كد زير روش انجام اين كار را نشان می دهد :

[Visual Basic]
Dim nwindConn As SqlConnection = _
New SqlConnection("Data Source=localhost;Integrated Security=SSPI;" _
"Initial Catalog=northwind")
nwindConn.Open()

[C#]
SqlConnection nwindConn =
new SqlConnection("Data Source=localhost; Integrated Security=SSPI;"
"Initial Catalog=northwind");
nwindConn.Open();

پس از اتصال به يك منبع داده ،‌ می توان  از شی Command  به منظور اجرای دستورات و برگرداندن نتايج مورد نظر استفاده نمود  .شی Command  از طريق Command constructor كه يك query و يا عبارت SQL را دريافت می نمايد ، ايجاد می گردد . پس از ايجاد شی Command با استفاده از خصلت CommandText می توان عبارات SQL را ويرايش كرد .

[Visual Basic]
Dim catCMD As SqlCommand = _
New SqlCommand("SELECT CategoryID, CategoryName FROM Categories",nwindConn)

[C#]
SqlCommand catCMD =
new SqlCommand("SELECT CategoryID, CategoryName FROM Categories", nwindConn);


شی Command چندين متد Execute را به منظور  اجرای Stored Procedure ، query و يا عبارات  غير query نظير Update و Insert ، ارائه نموده است :

  • متد ExecuteReader : داده را به عنوان يك شی DataReader برمی گرداند . از متد فوق می توان در ارتباط با هر نوع query كه داده ئی را برمی گرداند ،‌استفاده نمود .

  • متد ExecuteScalar :  متد فوق يك مقدار نظير تعداد ركوردهائی كه با شرايط ذكر شده در يك query خاص مطابقت می نمايند و يا نتايج حاصل از فراخوانی يك تابع بانك اطلاعاتی  را برمی گرداند .

  • متد ExecuteNonQuery : متد فوق ،‌ دستوراتی را كه سطرهائی را برنمی گردانند ( نظير Sored procedure ، update و insert ) ،‌ اجراء می نمايد .

در زمان مقداردهی اوليه شی Command می بايست با توجه به شرايط موجود ،‌ متد مورد نظر را انتخاب نمود .

متد ExecuteReader ، نتايج را از طريق يك DataReader برمی گرداند . DataReader يك ساختار داده ئی متصل گراء ، فقط به سمت جلو و فقط خواندنی از داده های حاصل از اجرای يك query را برمی گرداند . پس از اجرای query ، اولين ركورد به DataReader  برگردانده می شود . در اين حالت ارتباط با بانك اطلاعاتی همچنان وجود داشته و امكان برگرداندن ركورد بعدی وجود خواهد داشت . در ساختمان داده فوق، صرفا" امكان خواندن ركوردها وجود داشته و نمی توان ركوردهای موجود را ويرايش نمود .

DataAdapters و DataSets
با اين كه DataReader برای برنامه های متصل گرا كافی به نظر می آيد ، ولی اين ساختمان داده قادر به حمايت از مدل غيرمتصل برای دستيابی به بانك های اطلاعاتی نمی باشد . بدين منظور  از كلاس های  DataAdapter و DataSet  ،‌استفاده می گردد .
DataSet مهمترين ابزار ذخيره سازی داده در معماری غيرمتصل ADO.NET است . DataSet مستقيما"  و از طريق يك شی Connection با بانك اطلاعاتی ارتباط برقرار نمی نمايد . برای استقرار داده در يك  DataSet می بايست يك DataAdapter ايجاد گردد . مسئوليت DataAdapter ارتباط با بانك اطلاعاتی ، اجرای query و استقرار داده در DataSet  می باشد . پس از فراخوانی متد Fill و يا  Update توسط DataAdapter ، تمامی عمليات انتقال داده در DataSet به صورت اتوماتيك انجام خواهد شد  . هر provider ارائه شده در فريمورك دات نت دارای يك شی DataAdapter است .
DataSet ،  مجموعه ای كامل از داده شامل جداول ، محدوديت ها و ارتباط بين جداول را در خود نگهداری می نمايد و می تواند شامل داده های محلی ( داده هائی كه از طريق كد ايجاد شده اند ) و يا داده هائی از چندين منبع داده باشد . 
ارتباط با منابع داده موجود توسط DataAdapter كنترل می گردد . DataAdapter همچنين تغييرات ايجاد شده در DataSet  را به منبع داده منتقل می نمايد .
كد زير سناريوی استفاده از يك DataSet را نشان می دهد :

[Visual Basic]

Dim nwindConn As SqlConnection = _
New SqlConnection("Data Source=localhost;" & _
"Integrated_Security=SSPI;Initial Catalog=northwind")

Dim selectCMD As SqlCommand = _
New SqlCommand("SELECT CustomerID, CompanyName FROM " & _
"Customers", nwindConn)
selectCMD.CommandTimeout = 30

Dim custDA As SqlDataAdapter = New SqlDataAdapter
custDA.SelectCommand = selectCMD
Dim custDS As DataSet = New DataSet
custDA.Fill(custDS, "Customers")
nwindConn.Close()

[C#]
SqlConnection nwindConn =
new SqlConnection("Data Source=localhost;" +
"IntegratedSecurity=SSPI;Initial Catalog=northwind");
SqlCommand selectCMD =
new SqlCommand("SELECT CustomerID, CompanyName FROM Customers",
nwindConn);
selectCMD.CommandTimeout = 30;

SqlDataAdapter custDA = new SqlDataAdapter();
custDA.SelectCommand = selectCMD;
nwindConn.Open();
DataSet custDS = new DataSet();
custDA.Fill(custDS, "Customers");
nwindConn.Close();

 

در كد فوق :

  • به منظور اتصال به بانك اطلاعاتی SQL Server يك SQLConnection ايجاد  شده است .

  • برای اجرای query مورد نظر در ارتباط با جدول Customers يك SQLCommand ايجاد شده است .

  • برای ايجاد SQLCommand يك DataAdapter ايجاد شده است ( ارتباط با بانك اطلاعاتی  ) . 

  • از طريق DataAdapter يك DataSet ايجاد شده است .DataSet بخش غير متصل عمليات داده بوده و می تواند به مجموعه وسيعی از كنترل های وب ASP.NET 2.0 نسبت داده شود .

در زمان استفاده از يك DataSet می توان آن را به هر نوع كنترل داده نسبت داد . بدين منظور از خصلت DataSource  و متد DataBind استفاده می گردد . در صورتی كه داده های موجود در بانك اطلاعاتی تغيير نمايند ،‌ تغييرات به صورت اتوماتيك در DataSet اعمال نمی شود و می بايست مجددا" از متد DataBind استفاده گردد . ( زمان و محل استفاده از متد DataBind از چالش های پياده كنندگان برنامه های وب در ASP.NET 1.x است ) .
در ASP.NET 2.0 تمامی فرآيندهای مربوط به ايجاد يك DataSet ، نسبت دهی داده ، نگهداری و يكسان سازی داده با ارائه مفهوم جديد منابع داده بهبود و  تسهيلات ويژه ای در اختيار پياده كنندگان برنامه های وب قرار می گيرد.

ASP.NET 2.0
در  ASP.NET 2.0 اغلب عمليات و يا فرآيندهای مورد نياز به منظور ايجاد يك SQLCommand ، توليد يك DataAdapter و استقرار داده در يك DataSet توسط بكارگيری DataSource از ديد پياده كنندگان برنامه های وب مخفی نگه داشته می گردد . در چنين مواردی می توان با استفاده از برنامه كمكی ( ويزارد ) نسبت دهی داده ، عمليات اشاره شده را به صورت اتوماتيك نيز انجام داد . برنامه كمكی Configure DataSource ،‌ كدمورد نياز به منظور اتصال به منابع ذخيره سازی داده ( نظير بانك های اطلاعاتی ، فايل های معمولی ، فايل هار XML ) را توليد و  query مورد نظر را ايجاد  می نمايد .
با داشتن يك منبع ذخيره سازی داده ،‌ می توان  در ادامه منبع داده را به يك كنترل نسبت داد . ارتباط برقرار شده بين منبع داده و كنترل مورد نظر ، Data Binding ناميده می شود . مقادير استخراج شده از منبع داده را می توان به خصلت های مربوط به هر كنترل نسبت و يا از آنان در جداول ، ليست ها و يا grid بدون نياز به نوشتن كد خاصی استفاده نمود .

+ نوشته شده توسط امین حاجی علیزاده در یکشنبه یکم بهمن ۱۳۸۵ و ساعت 12:11 |