نحوه ذخيره وبازيابی داده توسط ADO.NET New Page 1



ساير




 

 

 

SAKHA RAVESH CO.

 ا مروز

 پنجشنبه  3  فروردين  1396  2017  Mar.  23   Thursday ToDay
صفحه اصلی  مقالات نکته هادايره المعارف خودآموزها | تازه ها خود آزمون ها    
  نسخه قابل چاپ  

    5 4 3 2 1 

 عنوان

 نويسنده

  مشاهده

 تعداد آراء

 امتياز

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

 مديريت وب

17244

14

3.6

با توجه به جایگاه داده در عصر حاضر و  لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر  روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و  خدمات خود  را از طریق  سایت www.fabak.ir  به مخاطبان محترم عرضه می نماید

 

ذخيره و بازيابی داده توسط 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" %>
<script runat="server">
Private Sub Page_Load(ByVal Source As Object, ByVal E As EventArgs)
 Dim sql As String = "SELECT * FROM Employees WHERE EmployeeID = "Request.QueryString("EmployeeID")
 Dim strConnection As String = ConfigurationSettings.AppSettings("NWind")
 Dim conn As New SqlConnection(strConnection)
 conn.Open()
 Dim cmd As New SqlCommand(sql, conn)
 Response.Write("SQL: " & sql & "<br/>")
 Dim dr As SqlDataReader
 dr = cmd.ExecuteReader()
 Do While dr.Read()
   Response.Write(dr("FirstName").ToString & " " & dr("LastName").ToString)
 Loop
 conn.Close()
 End Sub
</script>
<html><head></head><body></body></html>

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



جستجو

مقالات                 
دايره المعارف       
دوره های آموزشی


 

 

مشاهده گروه ها



              

 

 تهيه شده در شرکت سخا روش -  1382