آموزش ADO.NET در ASP.NET به همراه مثال ای کاربردی
ADO.NET
ADO.NET پلی را بین کنترل های front end و پایگاه داده back end فراهم می سازد. اشیاء ADO.NET ، تمام عملیات های دسترسی به داده ها را کپسوله نموده و کنترل ها با این اشیاء جهت نمایش داده ها تعامل برقرار می کنند. از این رو ، جزئیات انتقال داده ها پنهان باقی می مانند.
شکل زیر در یک نگاه ، اشیاء ADO.NET را نشان می دهد:
کلاس DataSet
DataSet یک زیر مجموعه از پایگاه داده می باشد. این کلاس ارتباط مستمری با پایگاه داده ندارد. برای به روز رسانی پایگاه داده نیاز به برقراری مجدد ارتباط می باشد. DataSet حاوی اشیاء DataTable و DataRelation می باشد. اشیاء DataRelation نشان دهنده ارتباط بین دو جدول می باشند.
جدول ذیل برخی از خصیصه های مهم از کلاس DataSet را نشان می دهد:
خصیصه |
توضیحات |
CaseSensitive |
نشان می دهد که آیا مقایسه های رشته در جدول داده ها حساس به حروف (case-sensitive) هستند یا خیر. |
Container |
یک شمارنده برای مؤلفه دریافت می کند. |
DataSetName |
نام مجموعه داده جاری را دریافت کرده یا تنظیم می کند. |
DefaultViewManager |
یک view از داده را در مجموعه داده باز می گرداند. |
DesignMode |
نشان می دهد که آیا مؤلفه در حال حاضر در design mode است یا خیر. |
EnforceConstraints |
نشان می دهد که آیا قوانین محدودیت ، در هنگام تلاش برای انجام هر نوع به روز رسانی ، پیروی می شوند یا خیر. |
Events |
فهرستی از هندلرهای رویدادهایی را دریافت می کند که به این مؤلفه ضمیمه شده اند . |
ExtendedProperties |
مجموعه ای از اطلاعات سفارشی کاربر را که با DataSet مرتبط است ، دریافت می کند. |
HasErrors |
نشان می دهد که آیا خطایی رخ داده است یا خیر. |
IsInitialized |
نشان می دهد که آیا DataSet مقدار دهی اولیه شده است یا خیر. |
Locale |
اطلاعات محلی مورد استفاده برای مقایسه رشته ها در جدول را دریافت کرده یا تنظیم می کند. |
Namespace |
Namespace را از DataSet دریافت کرده یا تنظیم می کند. |
Prefix |
یک پیشوند XML را دریافت کرده یا تنظیم می کند. این پیشوند namespace را از DataSet به استعاره می گیرد. |
Relations |
مجموعه ای از اشیاء DataRelation را باز می گرداند. |
Tables |
مجموعه ای از اشیاء DataTable را باز می گرداند. |
جدول ذیل برخی از متدهای مهم از کلاس DataSet را نشان می دهد.
متد |
توضیحات |
AcceptChanges |
تمام تغییرات انجام شده از زمان بارگذاری DataSet یا از زمانی که این متد فراخوانی شده است را می پذیرد. |
BeginInit |
مقداردهی اولیه DataSet را شروع می کند. مقداردهی اولیه در حالت runtime رخ می دهد. |
Clear |
داده ها را پاک می کند. |
Clone |
ساختار DataSet را کپی می کند ، که این ساختار شامل تمام طرح های DataTable ، روابط و محدودیت ها می باشد. هیچ کدام از داده ها کپی نمی شوند. |
Copy |
هم ساختار و هم داده ها را کپی می کند. |
CreateDataReader() |
یک DataTableReader را با مجموعه نتیجه به ازای هر DataTable در همان ترتیبی که جدول ها در مجموعه Table ها ظاهر می شوند ، باز می گرداند. |
CreateDataReader(DataTable[]) |
یک DataTableReader را با مجموعه نتیجه به ازای هر DataTable باز می گرداند. |
EndInit |
مقداردهی اولیه data set را پایان می دهد. |
Equals(Object) |
تعیین می کند که آیا شیء تعیین شده برابر با شیء جاری است یا خیر. |
Finalize |
منابع را آزاد کرده و سایر عملیات های پاک سازی را اعمال می کند. |
GetChanges |
یک کپی از DataSet با تمام تغییرات انجام شده را از زمانی که DataSet بارگذاری شده یا از زمانی که متد AcceptChanges فراخوانی شده است ، باز می گرداند. |
GetChanges(DataRowState) |
یک کپی از DataSet را با تمام تغییرات انجام شده از زمانی که DataSet بارگذاری شده یا متد AcceptChanges فراخوانی شده است ، دریافت می کند که با DataRowState فیلتر شده است. |
GetDataSetSchema |
یک کپی از XmlSchemaSet برای DataSet دریافت می کند. |
GetObjectData |
یک شیء serialization information را با داده های موردنیاز برای سریال کردن DataSet پر می کند. |
GetType |
نوع نمونه جاری را دریافت می کند. |
GetXML |
خروجی XML از داده ها را باز می گرداند. |
GetXMLSchema |
یک طرح XSD برای خروجی XML از داده ها باز می گرداند. |
HasChanges() |
یک مقداری را دریافت می کند که نشان می دهد که آیا DataSet تغییر کرده است یا خیر ، که این تغییرات شامل : افزودن ، حذف یا اصلاح ردیف های داده ها می باشند. |
HasChanges(DataRowState) |
یک مقداری را با فیلتر DataRowState دریافت می کند که نشان می دهد که آیا DataSet تغییر کرده است یا خیر ، که این تغییرات شامل : افزودن ، حذف یا اصلاح ردیف های داده ها می باشند. |
IsBinarySerialized |
فرمت خروجی سریال شده از DataSet را بازبینی می کند. |
Load(IDataReader, LoadOption, DataTable[]) |
یک DataSet را با مقادیری از یک منبع داده با استفاده از IDataReader ارائه شده و یک آرایه از نمونه های DataTable پر می کند تا اطلاعات schema و namespace تأمین شوند. |
Load(IDataReader, LoadOption, String[]) |
یک DataSet را با مقادیری از یک منبع داده با استفاده از IDataReader ارائه شده و یک آرایه از رشته ها پر می کند تا نام جدول ها در DataSet را تأمین کند. |
Merge() |
داده ها را با داده هایی از DataSet دیگر ادغام می کند. این متد با فرم های overloaded متفاوت است. |
ReadXML() |
یک XML schema و داده ها در DataSet را می خواند. این متد با فرم های overloaded متفاوت است. |
ReadXMLSchema(0) |
یک XML schema را از DataSet می خواند. این متد با فرم های overloaded متفاوت است. |
RejectChanges |
تمام تغییرات ایجاد شده را از زمانی که آخرین فرخوانی متد AcceptChanges انجام شده است ، به عقب باز می گرداند. |
WriteXML() |
یک XML schema و داده ها از DataSet را می نویسد. این متد با فرم های overloaded متفاوت است. |
WriteXMLSchema() |
یک ساختار از DataSet را به عنوان یک طرح XML می نویسد. این متد با فرم های overloaded متفاوت است. |
کلاس DataTable
کلاس DataTable نشان دهنده جدول ها در پایگاه داده می باشد. خصیصه های مهم این کلاس در جدول ذیل آورده شده اند ؛ بیشتر این خصیصه ها از نوع read only هستند ، به جزء خصیصه PrimaryKey.
خصیصه |
توضیحات |
ChildRelations |
مجموعه ای از روابط فرزندی را باز می گرداند. |
Columns |
مجموعه ستون ها را باز می گرداند. |
Constraints |
مجموعه محدودیت ها را باز می گرداند. |
DataSet |
DataSet والد را باز می گرداند. |
DefaultView |
یک view از جدول را باز می گرداند. |
ParentRelations |
مجموعه ای از ParentRelations را باز می گرداند. |
PrimaryKey |
یک آرایه ای از ستون ها را به عنوان کلید اولیه برای جدول دریافت کرده یا تنظیم می کند. |
Rows |
مجموعه ای از ردیف ها را باز می گرداند |
جدول ذیل برخی از متدهای مهم کلاس DataTable را نشان می دهد:
متد |
توضیحات |
AcceptChanges |
تمام تغییرات را از آخرین فرخوانی متد AcceptChanges پذیرش می کند. |
Clear |
تمام داده ها را از جدول پاک می کند. |
GetChanges |
یک کپی از DatatTable با تمام تغییرات ایجاد شده از وقتی که متد AcceptChanges فراخوانی شده است ، باز می گرداند. |
GetErrors |
یک آرایه از ردیف های دارای خطا را باز می گرداند. |
ImportRows |
یک ردیف جدید را به داخل جدول کپی می کند. |
LoadDataRow |
یک ردیف خاص را پیدا کرده و به روز رسانی می کند ، یا اگر هیچ ردیفی را پیدا نکند ، یک ردیف جدید را ایجاد می کند. |
Merge |
جدول را با DataTable دیگر ادغام می کند. |
NewRow |
یک DataRow جدید را ایجاد می کند. |
RejectChanges |
تمام تغییرات را از زمان آخرین فراخوانی متد AcceptChanges به عقب باز می گرداند. |
Reset |
یک جدول را به وضعیت اولیه آن دوباره تنظیم می کند. |
Select |
یک آرایه ای از اشیاء DataRow باز می گرداند |
کلاس DataRow
شیء DataRow نشان دهنده یک ردیف در یک جدول می باشد. این کلاس ، خصیصه های مهم زیر را دارا می باشد:
خصیصه |
توضیحات |
HasErrors |
نشان می دهد که آیا خطایی رخ داده است یا خیر. |
Items |
داده ذخیره شده در یک ستون خاص را دریافت کرده یا تنظیم می کند. |
ItemArrays |
تمام مقادیر برای یک ردیف را دریافت کرده یا تنظیم می کند. |
Table |
جدول والد را باز می گرداند. |
برخی از متدهای مهم کلاس DataRow به شرح جدول ذیل می باشد:
متد |
توضیحات |
AcceptChanges |
تمام تغییرات ایجاد شده از زمانی که این متد فراخوانی شده است ، می پذیرد. |
BeginEdit |
عملیات edit را شروع می کند. |
CancelEdit |
عملیات edit را کنسل می کند. |
Delete |
DataRow را حذف می کند. |
EndEdit |
عملیات edit را پایان می دهد. |
GetChildRows |
ردیف های فرزند از یک ردیف را دریافت می کند. |
GetParentRow |
ردیف والد را دریافت می کند. |
GetParentRows |
ردیف های والد از شیء DataRow را دریافت می کند. |
RejectChanges |
تغییرات اعمال شده از آخرین فراخوانی متد AcceptChanges را به عقب باز می گرداند. |
شیء DataAdapter
شیء DataAdapter ، به عنوان یک واسطه بین شیء DataSet و پایگاه داده عمل می کند. این شیء به DataSet کمک می کند تا از داده های پایگاه داده های مختلف یا سایر منابع داده ای استفاده نماید.
شیء DataReader
شیء DataReader ، یک جایگزین برای ترکیب DataSet و DataAdapter می باشد. این شیء یک دسترسی از نوع اتصال جهت دار به رکوردهای داده در پایگاه داده ایجاد می کند. این اشیاء برای دسترسی های read-only مناسب هستند ، همانند پر کردن جمعیت یک لیست ، و سپس شکستن اتصال.
اشیاء DbCommand و DbConnection
شیء DbConnection نشان دهنده یک اتصال با منبع داده می باشد. اتصال می تواند از طریق اشیاء command به اشتراک گذاشته شوند.
شیء DBCommand نشان دهنده دستور یا یک رویه ذخیره شده و ارسال شده به پایگاه داده از طریق بازیابی یا دستکاری داده ها می باشد.
مثال
تا کنون ، ما از جدول ها و پایگاه داده هایی که قبلاً در کامپیوترمان موجود بودند ، استفاده کرده ایم. در این مثال ، ما یک جدول را ایجاد خواهیم کرد ، ستون ها ، ردیف ها و داده ها را به آن افزوده و جدول را با استفاده از شیء GridView نمایش خواهیم داد.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="createdatabase._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>
Untitled Page
</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
</div>
</form>
</body>
</html>
فایل پشت کد به صورت زیر می باشد:
namespace createdatabase
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
DataSet ds = CreateDataSet();
GridView1.DataSource = ds.Tables["Student"];
GridView1.DataBind();
}
}
private DataSet CreateDataSet()
{
//creating a DataSet object for tables
DataSet dataset = new DataSet();
// creating the student table
DataTable Students = CreateStudentTable();
dataset.Tables.Add(Students);
return dataset;
}
private DataTable CreateStudentTable()
{
DataTable Students = new DataTable("Student");
// adding columns
AddNewColumn(Students, "System.Int32", "StudentID");
AddNewColumn(Students, "System.String", "StudentName");
AddNewColumn(Students, "System.String", "StudentCity");
// adding rows
AddNewRow(Students, 1, "M H Kabir", "Kolkata");
AddNewRow(Students, 1, "Shreya Sharma", "Delhi");
AddNewRow(Students, 1, "Rini Mukherjee", "Hyderabad");
AddNewRow(Students, 1, "Sunil Dubey", "Bikaner");
AddNewRow(Students, 1, "Rajat Mishra", "Patna");
return Students;
}
private void AddNewColumn(DataTable table, string columnType, string columnName)
{
DataColumn column = table.Columns.Add(columnName, Type.GetType(columnType));
}
//adding data into the table
private void AddNewRow(DataTable table, int id, string name, string city)
{
DataRow newrow = table.NewRow();
newrow["StudentID"] = id;
newrow["StudentName"] = name;
newrow["StudentCity"] = city;
table.Rows.Add(newrow);
}
}
}
زمانی که برنامه را اجرا می کنیم ، موارد ذیل را مشاهده خواهیم نمود:
- برنامه کاربردی ایتدا یک مجموعه داده را ایجاد کرده و آن را با کنترل grid view با استفاده از متد DataBind() از کنترل GridView صحافی می کند.
- متد Createdataset() یک تابع تعریف شده توسط کاربر است ، که یک شیء DataSet جدید ایجاد کرده و سپس متد CreateStudentTable() را که متد دیگر تعریف شده توسط کاربر است را برای ایجاد جدول فراخوانی کرده و آن را به مجموعه Tables از Data set اضافه می کند.
- متد CreateStudentTable() ، متدهای تعریف شده توسط کاربر AddNewColumn() و AddNewRow() را برای ایجاد ستون ها ، ردیف های جدول و هم چنین افزودن داده به ردیف ها فراخوانی می کند.
زمانی که صفحه اجرا شد ، ردیف هایی از جدول مطابق تصویر زیر باز گردانده می شوند:
این فصل در یک نگاه:
در این فصل پس از بررسی سیستم مسیریابی و طراحی صفحه نمایش ویدیو ها، به سراغ پنل کاربری خواهیم رفت و مباحث Model Binding و…
توجه: این دوره آموزشی به صورت پیوسته بر اساس آخرین نسخه ی ASP.NET Core بروزرسانی خواهد شد. آموزش صفر تا صد طراحی سایت اشتراک ویدیو مشابه آپارات با استفاده از ASP.NET CORE MVC 3.0 و V…این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه قصد داریم تا فروشگاه اینترنتی دیجی کالا رو با Asp.Net Core3 پیاده سازی کنیم. ابتدا طراحی قالب دیجی کالا رو به صورت کامل انجام خواهیم داد. در مرحله میریم …این فصل در یک نگاه:
…
توضیحات کلی مجموعه: در این مجموعه آموزشی، با استفاده از جدیدترین تکنولوژی ها و ابزار های مایکروسافت (دات نت)، به یک پروژه جذاب مدیریت آگهی مشابه دیوار می پردازیم. این آموزش در دو بخش کلی و…این فصل در یک نگاه:
در این دوره به آموزش صفر تا صد جدیدترین نسخه ASP یعنی CORE جدیدترین ورژن خواهیم پرداخت.این آموزش از سطح مقدماتی تا فوق …
دوره آموزش کامل طراحی وب به همراه پروژه ساخت سیستم مدیریت کتابخانه این دوره با کور 1 آغاز می شود و در ادامه پروژه به کور 2 تبدیل می شودو پروژه نهایی (سیستم مدیریت کتابخانه) با Asp.net کور…این فصل در یک نگاه:
ساخت محیط کاربریآموزش نحوه ی ارسال ایمیل در Asp.net MVCآموزش تنظیمات Gmail برای استفادهاستفاده از Yahooاستفاده از سرویس …
به نام خدا... در خدمتتون هستم با آموزش ارسال ایمیل در Asp.net MVC... ارسال ایمیل یکی از اجزای اصلی ییک سایت به شمار می رود و واقعا سایتی که برای اجزای مختلفش همانند ثبت کاربر جدید و یا ارسال…این فصل در یک نگاه:
فصل دوم در یک نگاه:فصل دوم در یک نگاه:…
در این پکیج به مبحث طراحی وب ، در قالب ساخت یک سایت فروشگاهی 5040 به آدرس http://5040.ir می پردازیم که به جرات مشهورترین و یکی از برترین فروشگاه های مجازی در کشور است. در این مجموعه قصد داری…این فصل در یک نگاه:
…
در این دوره آموزشی، وبسایت ورزش3 را با استفاده از ASP.NET Core پیاده سازی می کنیم و همچنین اپ اندروید آن را هم با Xamarin متصل به سرور سایت طراحی و در نهایت نحوه انتشار آن در مارکت هایی مثل …این فصل در یک نگاه:
کاملترین آموزش هاست و کار با سی پنل.در هنگام خرید سرویس هاست کلمه ای به نام “کنترل پنل” را زیاد خواهید دید آیا تا به حال…
سی پنل یک کنترل پنل هاست محبوب و معروف در جهان و ایران است. در فیلم آموزش سی پنل هم توصیه اکید شده تا افراد مبتدی و حتی افراد حرفه ای از این کنترل پنل هاست سی پنل استفاده کنند. آموزش cpanel …این فصل در یک نگاه:
فصل پنجم…
توضیحات کلی مجموعه: درباره گیت: لذت پیش بردن پروژه های برنامه نویسی خود را با بهترین ورژن کنترل سیستم جهان تجربه کنید کامل ترین دوره ی آموزشی گیت و گیت هاب به همراه مثال های کاربردی گی…این فصل در یک نگاه:
رشد و درآمدزایی یک وب سایت یا کسب و کار اینترنتی کاملا به ذوق و مهارت وب مستر یا همان مدیر اصلی وب سایت گره خورده و متاس…
اصول مدیریت وب سایت برای وب مستر شدن برای موفقیت یک وب سایت لازم الاجراست. زیرا شما دوست دارید وب سایت خود را به کارخانه پولسازی تبدیل کنید. این واقعیت رویا نیست. هرکس این اصول را بداند به …