تبلیغات
آموزشASP.NET - ذخیره و بازیابی داده توسط ADO.NET (بخش ششم)




نوع مطلب :
برچسب ها :
لینک های مرتبط :

یکشنبه 26 شهریور 1396 08:11 ب.ظ
Great post. I was checking constantly this weblog and I am inspired!

Very helpful info specifically the closing section :) I deal with such information much.
I used to be looking for this certain information for a long time.
Thank you and best of luck.
جمعه 24 شهریور 1396 09:36 ب.ظ
Hey! This post couldn't be written any better!
Reading this post reminds me of my good old room mate! He always kept chatting about this.
I will forward this post to him. Fairly certain he will have a good read.
Thanks for sharing!
سه شنبه 14 شهریور 1396 11:18 ب.ظ
Hi there, this weekend is fastidious for me, as this occasion i am reading this great
educational article here at my home.
 
فردا روشن اسن به
آموزشASP.NET
صفحه نخست         تماس با مدیر         پست الکترونیک        RSS         ATOM
 
 

در بخش های قبل این مقاله به نقش اساسی 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 نرسیده باشد ، اقدام به خواندن آنان می نماید .

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

  • ایجاد یک 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 نرسیده باشد ، اقدام به خواندن آنان می نماید .

asp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشaspasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشaspasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp.netاموزشasp

 
لبخندناراحتچشمک
نیشخندبغلسوال
قلبخجالتزبان
ماچتعجبعصبانی
عینکشیطانگریه
خندهقهقههخداحافظ
سبزقهرهورا
دستگلتفکر


درباره وبلاگ

سلام من آرش کاکاوند دانشجوی رشته کامپیوتر هستم و ورود شما رابه دنیای aspخوش امدمیگم.حتما نظر بدین تا من کارم رو بهتر ادامه بدم

مدیر وبلاگ : ارش کاکاوند
مطالب اخیر
آرشیو وبلاگ
پیوندهای روزانه
نویسندگان
صفحات جانبی
نظرسنجی
شما کدام یک از برنامه های زیر را برای طراحی وب انتخاب می کنید؟








برچسبها
جستجو

آمار وبلاگ
کل بازدید :
بازدید امروز :
بازدید دیروز :
بازدید این ماه :
بازدید ماه قبل :
تعداد نویسندگان :
تعداد کل پست ها :
آخرین بازدید :
آخرین بروز رسانی :