ذخيره و بازيابی داده توسط ADO.NET (بخش ششم)
دهلران پی سی
سایت جامع علمی ,آموزشی,فرهنگی و تفریحی

ذخيره و بازيابی داده توسط ADO.NET (بخش ششم)

 آنچه تاکنون گفته شده است :

در بخش های قبل اين مقاله به نقش اساسی Data Set در ارتباط با ذخيره و بازيابی داده اشاره گرديد . علاوه بر Data Set ، می توان دستوراتی را مستقيما" بر روی  يک Connection بانک اطلاعاتی انجام داد . شی Connection سه متد زير را در ايـن رابطه ارائه نموده است :

  • ExecuteScalar : متد فوق ، يک  Query را اجراء نموده و در ادامه صرفا" يک مقدار را بر می گرداند(نظير شمارش تعداد رکوردهای موجود در يک جدول بانک اطلاعاتی )

  •  ExecuteNonQuery : متد فوق ، دستوراتی نظير INSERT,UPDATE و DELETE را که باعث اعمال تغييرات در بانک اطلاعاتی می گردند را اجراء نموده و  تعداد سطرهای متاثر از اجرای دستور را برمی گرداند .

  • ExecuteReader : متد فوق ، باعث خواندن رکوردها ی موجود در بانک اطلاعاتی به صورت ترتيبی می گردد.

برای استفاده از متدهای فوق ، مراحل زير را دنبال می نمائيم :

  • ايجاد يک Connection با بانک اطلاعاتی
  • باز نمودن Connection
  • ايجاد يک شی Command شامل دستور SQL و يا Stored Procedure که می بايست اجراء گردد .
  • اجرای متد مورد نظر در ارتباط با شی Command
  • بستن Connection ايجاد شده با بانک اطلاعاتی

برگرداندن يک مقدار از بانک اطلاعاتی
در بخش دوم  اين مقاله با نحوه اضافه نمودن و يا حذف سطرهائی از يک Data Set و بهنگام سازی بانک اطلاعاتی از طريق Data Set آشنا شديم . در اين رابطه لازم است به اين موضوع اشاره گردد که در برخی موارد لازم است که در ابتدا اطلاعاتی از بانک اطلاعاتی بازيابی و در ادامه رکورد مورد نظر به بانک اطلاعاتی اضافه گردد . ( بازيابی اطلاعات قبل از درج رکورد جديد در بانک اطلاعاتی ) . مثلا" زمانی که  رکوردی دارای يک فيلد کليد منحصر بفرد می باشد ، نظير فيلد ID در بانک اطلاعاتی نمونه Contact ، لازم است در ابتدا يک مقدار منحصربفرد جديد برای هر رکورد اخذ و در ادامه رکورد مورد نظر را در بانک اطلاعاتی اضافه نمود . در اين رابطه می توان از روش های متعددی به منظور دريافت يک مقدار کليد منحصربفرد جديد ، استفاده نمود .  ساده ترين روش در اين رابطه ، ايجاد  يک شی Command و استفاده از متد ExecuteScalar به منظور برگرداندن يک مقدار می باشد . با توجه به نوع بانک اطلاعاتی می توان از دو نوع متفاوت اشياء  Command  استفاده نمود :

  • اشياء SqlCommand ، باعث اجرای دستورات بر روی يک Connection مربوط به بانک اطلاعاتی SQL می گردند .
  • اشياء OleDBCommand ، باعث اجرای دستورات بر روی يک  Connection مربوط به بانک اطلاعاتی OLE می گردند .

کد زير تعداد رکوردهای موجود در جدول Orders  را با استفاده از تابع Count برمی گرداند .

VB.NET ::Returning A value from a DataBase

Dim ordersCMD As SqlCommand = New SqlCommand("SELECT Count(*) FROM Orders", nwindConn)
Dim count As Int32 = CInt(ordersCMD.ExecuteScalar())

از متد ExecuteScalar ، می توان به همراه هر عبارت SQL  که قادر به برگرداندن يک مقدار می باشد ، استفاده نمود .

تغيير رکوردهای موجود در يک بانک اطلاعاتی
متد ExecuteNonQuery ،دستوراتی را اجراء می نمايد که يک Data Set را بر نمی گردانند (نظير دستورات  INSERT , DELETE و يا UPDATE ) . به منظور اجرای دستوراتی اينچنين در ابتدا با استفاده از دستورات SQL  و Connection  مربوطه يک شی Command را ايجاد نموده و در ادامه می توان از  متد  ExecuteNonQuery مربوط به شی Command استفاده نمود. کد زير با اجرای دستور INSERT ، يک رکورد را در بانک اطلاعاتی با استفاده از ExecuteNonQuery  درج می نمايد .

VB.NET ::Insert  Record  Directly in a DataBase

Dim nwindConn As SqlConnection = New SqlConnection("Data Source=localhost;Integrated Security=SSPI;Initial Catalog=northwind")
nwindConn.Open()
Dim insertStr As String = "INSERT INTO Customers (CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')"
Dim insertCMD As SqlCommand = New SqlCommand(insertStr, nwindConn)
Dim recordsAffected As Int32 = insertCMD.ExecuteNonQuery()

متد ExecuteNonQuery از Connection  بانک اطلاعاتی استفاده نموده و در اين رابطه از  Data Adapter و يا يک Data Set ، استفاده نمی شود.در صورتی که تغييراتی در يک جدول بانک اطلاعاتی با استفاده از متد فوق انجام شود ، می بايست Data Set مربوطه را که متاثر از تغييرات فوق می باشد را  با فراخوانی متد  Fill ، بهنگام نمود.

بازيابی رکوردها ی موجود در يک بانک اطلاعاتی
متد ExecuteReader دستوراتی را که باعث برگرداندن رکوردهائی می شوند ، اجراء می نمايد. ( نظير يک عبارت SQL SELECT ) .هر رکورد  به عنوان يک شی Data Reader برگردانده می شود. که نوع خاصی از يک Data Set و با ويژگی فقط خواندنی است . با توجه به اينکه متد ExecuteReader مستقيما" بر روی  Connection بانک اطلاعاتی عمل خواهد نمود ، دو نوع ( نسخه ) متفاوت از شی Data Reader وجود دارد : OleDbDataReader و SqlDataReader
استفاده از متد ExecuteReader برای ايجاد اشياء Data Reader ، دارای کارائی بمراتب بهتری در مقايسه با ايجاد Data Set از يک Data Adapter بوده  ( در هر لحظه يک سطر در حافظه مستقر می گردد )  ولی انعطاف پذيری آن کمتراست.  اشياء Data Reader ، به صورت فقط خواندنی بوده و امکان خواندن رکوردها بصورت ترتيبی و صرفا" به سمت جلو( Forward ) وجود خواهد داشت ( هر لحظه يک رکورد ) . با استفاده از Data Set ، امکان دريافت رکوردهای بمراتب بيشتری با هر نوع اولويت وجود داشته و در ادامه می توان پس از اعمال تغييرات آنان را مجددا" در بانک اطلاعاتی درج نمود .
کد زير ، نحوه استفاده  از متد ExecuteReader به منظور بازيابی اطلاعات از بانک اطلاعاتی را نشان می دهد .

VB.NET ::Retrieving Records Directly from DataBase

<%@ Page Language="vb" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.SqlClient" %>

شی Data Reader ، شامل مجموعه ای از رکوردها با ويژگی  Read-Forward بوده و  متد Read  تا زمانی که به انتهای مجموعه رکوردهای موجود در Data Reader نرسيده باشد ، اقدام به خواندن آنان می نمايد .


نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:








ارسال توسط هادی احمدی

آرشیو مطالب
پيوند هاي روزانه
امکانات جانبی

آمار وب سایت:  

بازدید امروز : 235
بازدید دیروز : 737
بازدید هفته : 1057
بازدید ماه : 1453
بازدید کل : 205441
تعداد مطالب : 736
تعداد نظرات : 23
تعداد آنلاین : 1

Google

در اين وبلاگ
در كل اينترنت
 <-PostTitle-> <-PostContent-> 1 <-PostLink->