0% found this document useful (0 votes)
18 views

Asp Net ch09 Final

asp

Uploaded by

Mahmoud
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
18 views

Asp Net ch09 Final

asp

Uploaded by

Mahmoud
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 20

‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﻓﺼﻞ ﻧﻬﻢ ‪:‬‬


‫ﻃﺮﻳﻘﻪ ﺩﺳﺘﻴﺎﺑﯽ ﻭ ﮐﺎﺭ ﺑﺎ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ‪ - ASP.NET‬ﻗﺴﻤﺖ ﺩﻭﻡ‬

‫ﻣﻘﺪﻣﻪ ‪:‬‬

‫ﺩﺭ ﺍﻳﻦ ﻓﺼﻞ ﻣﺒﺎﺣﺚ ﺗﻜﻤﻴﻠﻲ ﻛﺎﺭ ﺑﺎ ﺩﻳﺘﺎﺑﻴﺲ ﻫﺎ ﻭ ‪ ADO.NET‬ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ ﺧﻮﺍﻫﻨـﺪ ﮔﺮﻓـﺖ ﻣﺎﻧﻨـﺪ‬
‫ﺍﺟﺮﺍﻱ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ‪ ،‬ﺍﻧﺠﺎﻡ ﻋﻤﻠﻴﺎﺕ ﺭﻳﺎﺿﻲ ﺭﻭﻱ ﺳﺘﻮﻥ ﻫﺎ ﻭ ﻏﻴﺮﻩ‪.‬‬

‫ﺍﺟﺮﺍﻱ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ‪:‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﺑﺮﻧﺎﻣـﻪ ﻫـﺎ ‪ ،‬ﺑﺮﻧﺎﻣـﻪ ﺍﻱ ﺳـﺮﻳﻌﺘﺮ ﻭ ﺍﻣـﻦ ﺗـﺮ ﻧﺴـﺒﺖ ﺑـﻪ ﺣـﺎﻟﺘﻲ ﻛـﻪ‬
‫ﺩﺳﺘﻮﺭﺍﺕ ‪ SQL‬ﺑﻪ ﺻﻮﺭﺕ ﻣﺴﺘﻘﻴﻢ ﺭﻭﻱ ﺩﻳﺘﺎﺑﻴﺲ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﻧﺪ ﺭﺍ ﺍﻳﺠﺎﺩ ﻣـﻲ ﻛﻨـﺪ‪ .‬ﻫﻤـﺎﻧﻄﻮﺭ ﻛـﻪ ﺩﺭ ﻃـﻲ‬
‫ﻓﺼﻮﻝ ﭘﻴﺸﻴﻦ ﺩﺭ ﻣﻮﺭﺩ ﻧﺤﻮﻩ ﻱ ﺍﻳﺠﺎﺩ ﺁﻧﻬﺎ ﺻﺤﺒﺖ ﺷﺪ ‪ ،‬ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷـﺪﻩ ﺩﺳـﺘﻮﺭﺍﺕ ‪ SQL‬ﻭ ﭘـﻴﺶ‬
‫ﻛﺎﻣﭙﺎﻳﻞ ﺷﺪﻩ ﺍﻱ ﺑﻮﺩﻩ ﻭ ﺩﺭ ﺣﺎﻓﻈﻪ ﻱ ﺳﺮﻭﺭ ﺩﻳﺘﺎﺑﻴﺲ ﺷﻤﺎ ‪ Cache‬ﺧﻮﺍﻫﻨﺪ ﺷﺪ‪ .‬ﻧﺤﻮﻩ ﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻧﻬﺎ ﺩﺭ‬
‫‪ ADO.NET‬ﺑﻪ ﺻﻮﺭﺕ ﻳﻚ ﻣﺜﺎﻝ ﺍﺭﺍﺋﻪ ﺧﻮﺍﻫﺪ ﺷﺪ‪.‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪1‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﻣﺜﺎﻝ ‪: ١‬‬

‫ﻳﻚ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺟﺪﻳﺪ ﺑﻪ ﻧﺎﻡ ‪ MyTestDB‬ﺍﻳﺠﺎﺩ ﻛﻨﻴﺪ ﺑﺎ ﺩﻭﺟﺪﻭﻝ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ‪ .‬ﻣﻲ ﺧـﻮﺍﻫﻴﻢ ﺍﺯ ﺍﻳـﻦ‬
‫ﺩﻭ ﺟﺪﻭﻝ ﮔﺰﺍﺭﺷﻲ ﺗﻬﻴﻪ ﻛﻨﻴﻢ ﻛﻪ ﺑﻪ ﺍﺯﺍﻱ ﻫﺮ ‪ ID‬ﺗﻔﺎﺿﻞ ﺗﻌﺪﺍﺩ ﻭﺭﻭﺩﻱ ﻭ ﺗﻌﺪﺍﺩ ﻓﺮﻭﺧﺘﻪ ﺷﺪﻩ ﺑﻪ ﺻﻮﺭﺕ ﻳـﻚ‬
‫ﺳﺘﻮﻥ ﻭﺍﺣﺪ ﺩﺭ ﻳﻚ ﺩﻳﺘﺎ ﮔﺮﻳﺪ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﻮﺩ‪ .‬ﺑﻬﺘﺮﻳﻦ ‪ ،‬ﻣﻄﻤﺌﻦ ﺗﺮﻳﻦ ﻭ ﺳﺮﻳﻌﺘﺮﻳﻦ ﺭﺍﻩ ﺑﺮﺍﻱ ﺍﻳﻦ ﻧﻮﻉ ﻣﺜﺎﻟﻬﺎ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺟﺪﻭﻝ ‪: tblEntry‬‬

‫ﺷﻜﻞ ‪ – ١‬ﻣﺸﺨﺼﺎﺕ ﺟﺪﻭﻝ ‪ tblEntry‬ﺩﺭ ﺣﺎﻝ ﻃﺮﺍﺣﻲ‪.‬‬

‫ﺟﺪﻭﻝ ‪: tblSell‬‬

‫ﺷﻜﻞ ‪ –٢‬ﻣﺸﺨﺼﺎﺕ ﺟﺪﻭﻝ ‪ tblSell‬ﺩﺭ ﺣﺎﻟﺖ ﻃﺮﺍﺣﻲ‪.‬‬

‫ﺩﺭ ﺍﺩﺍﻣﻪ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ‪ Foreign key‬ﺭﺍ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﻢ ‪ .‬ﺭﻭﻱ ﺻﻔﺤﻪ ﺩﺭ ﺣﺎﻟـﺖ ﻃﺮﺍﺣـﻲ ﻛﻠﻴـﻚ ﺭﺍﺳـﺖ ﻛﻨﻴـﺪ ﻭ‬
‫ﺳﭙﺲ ﮔﺰﻳﻨﻪ ﻱ ‪ Relationship‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﻳﻴﺪ )ﺷﻜﻞ ‪: (٣‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪2‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﺷﻜﻞ ‪ – ٣‬ﺍﻧﺘﺨﺎﺏ ‪ Relationship‬ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﻗﻴﻮﺩﺍﺕ ﺑﻴﺸﺘﺮ ‪.‬‬

‫ﺩﺭ ﺻﻔﺤﻪ ﻱ ﻇﺎﻫﺮ ﺷﺪﻩ ﺭﻭﻱ ‪ New‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ )ﺷﻜﻞ ‪ (٤‬ﻭ ﺗﻨﻈﻴﻤﺎﺕ ﺻﻔﺤﻪ ﺭﺍ ﻣﺎﻧﻨﺪ ﺷﻜﻞ ﺍﻧﺠﺎﻡ ﺩﻫﻴﺪ‪.‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪3‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

. Foreign key ‫ ﺑﻴﻦ ﻓﻴﻠﺪﻫﺎ ﻭ ﺍﻳﺠﺎﺩ‬Relationship ‫ – ﻧﺤﻮﻩ ﻱ ﺍﻳﺠﺎﺩ‬٤ ‫ﺷﻜﻞ‬

. (٥ ‫ ﺻﻔﺤﻪ ﻱ ﻧﻤﺎﻳﺶ ﺛﺒﺖ ﺗﻐﻴﻴﺮﺍﺕ ﻇﺎﻫﺮ ﺧﻮﺍﻫﺪ ﺷﺪ ) ﺷﻜﻞ‬، ‫ﻭ ﺩﺭ ﺁﺧﺮ ﭘﺲ ﺍﺯ ﺑﺴﺘﻦ ﺍﻳﻦ ﺻﻔﺤﻪ ﺩﻳﺎﻟﻮﮒ‬
.‫ ﺭﻭﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺯﻳﺮ ﺭﺍ ﺍﻳﺠﺎﺩ ﻛﻨﻴﺪ‬Query Analyzer ‫ ﺩﺭ‬، ‫ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﺭﻭﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ‬

Create Procedure rptDiff


As
select distinct myTestDB.dbo.tblEntry.ID ,myTestDB.dbo.tblEntry.Entry_No , myTestDB.dbo.tblSell.Sell_No,
(myTestDB.dbo.tblSell.Sell_No - myTestDB.dbo.tblEntry.Entry_No) as final_result
from myTestDB.dbo.tblEntry LEFT OUTER JOIN myTestDB.dbo.tblSell
ON (myTestDB.dbo.tblEntry.ID = myTestDB.dbo.tblSell.ID)
Return

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
4 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

Enterprise ‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﻪ ﺑﺘﻮﺍﻥ ﺑﺎ ﺩﻳﺘﺎﺑﻴﺲ ﻓﻮﻕ ﻛﺎﺭ ﻛﺮﺩ ﻣﻲ ﺗﻮﺍﻥ ﻳﻚ ﺳﺮﻱ ﺩﺍﺩﻩ ﺭﺍ ﺧﻴﻠﻲ ﺳﺮﻳﻊ ﺩﺭ ﻣﺤﻴﻂ‬
.‫ ﻭﺍﺭﺩ ﻧﻤﻮﺩ‬manager
: ‫ﺑﺮﺍﻱ ﺗﺴﺖ ﻛﺮﺩﻥ ﺁﻥ ﻫﻢ ﻣﻲ ﺗﻮﺍﻧﻴﺪ ﺍﺯ ﺩﺳﺘﻮﺭ ﺯﻳﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ‬
Exec rptDiff

. ‫ – ﺻﻔﺤﻪ ﻱ ﺗﺎﻳﻴﺪ ﺗﻐﻴﻴﺮﺍﺕ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﺑﺮ ﺭﻭﻱ ﺩﻳﺘﺎﺑﻴﺲ‬٥ ‫ﺷﻜﻞ‬

‫ ﺑﻪ ﺻـﻮﺭﺕ‬SqlDataAdapter ‫ ﻭ ﺑﺮﻧﺎﻣﻪ ﻣﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ‬ADO.NET ‫ﺳﭙﺲ ﻧﺤﻮﻩ ﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﺩﺭ‬


: ‫ﺯﻳﺮ ﺍﺳﺖ‬
private void Page_Load(object sender, System.EventArgs e)
{
SqlConnection sqlconnectionForum = new
SqlConnection("server=(local);uid=sa;pwd=;database=MyTestDB");

SqlDataAdapter sqldataadapterSP =
new SqlDataAdapter("rptDiff",sqlconnectionForum);
sqldataadapterSP.SelectCommand.CommandType =
CommandType.StoredProcedure ;

DataSet datasetSP = new DataSet();

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
5 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫;) "‪sqldataadapterSP.Fill( datasetSP,"tblEntry‬‬

‫;‪DataGrid1.DataSource = datasetSP.Tables["tblEntry"].DefaultView‬‬
‫;)(‪DataGrid1.DataBind‬‬
‫}‬

‫ﻣﺜﺎﻝ ‪: ٢‬‬

‫ﺩﺭ ﺍﻳﻦ ﻣﺜﺎﻝ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﻧﺤﻮﻩ ﻱ ﭘﺎﺱ ﻛﺮﺩﻥ ﻣﺘﻐﻴﺮﻫﺎ ﻭ ﻭﺭﻭﺩﻱ ﻫﺎﻱ ﻓﺮﻡ ﺭﺍ ﺑـﻪ ﻳـﻚ ﺭﻭﻳـﻪ ﺫﺧﻴـﺮﻩ ﺷـﺪﻩ‬
‫ﺑﺮﺭﺳﻲ ﻛﻨﻴﻢ‪ .‬ﻓﺮﺽ ﻛﻨﻴﻢ ﺩﺭ ﺩﻳﺘﺎﺑﻴﺲ ‪ MyTestDB‬ﻛﻪ ﺁﻧﺮﺍ ﺩﺭ ﻣﺜﺎﻝ ﻗﺒﻞ ﺍﻳﺠﺎﺩ ﻛﺮﺩﻳﻢ ﻣﻲ ﺧـﻮﺍﻫﻴﻢ ﺑـﺎ ﺩﺍﺩﻥ‬
‫‪ ID‬ﺗﻔﺎﺿﻞ ﺗﻌﺪﺍﺩ ﻭﺭﻭﺩﻱ ﻭ ﺗﻌﺪﺍﺩ ﻓﺮﻭﺧﺘﻪ ﺷﺪﻩ ﺁﻧﺮﺍ ﺑﺪﺳﺖ ﺁﻭﺭﻳﻢ ﻭ ﺭﻭﻱ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺩﻫﻴﻢ ‪:‬‬

‫ﺍﺑﺘﺪﺍ ﺭﻭﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺯﻳﺮ ﺭﺍ ﺍﻳﺠﺎﺩ ﻧﻤﺎﻳﻴﺪ ‪:‬‬


‫ﺑﺮﺍﻱ ﺍﻳﻨﻜﺎﺭ ﻋﻼﻭﻩ ﺑﺮ ‪ Query Analyzer‬ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﻣﺤﻴﻂ ‪ Enterprise manager‬ﻧﻴﺰ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ .‬ﺩﺭ‬
‫ﻟﻴﺴﺖ ﺩﺭﺧﺘﻲ ﻣﺮﺑﻮﻁ ﺑﻪ ‪ MyTestDB‬ﺭﻭﻱ ﮔﺰﻳﻨﻪ ﻱ ‪ Stored procedures‬ﻛﻠﻴﻚ ﻧﻤﺎﻳﻴﺪ ﺗﺎ ﺗﻤﺎﻡ ﺭﻭﻳﻪ ﻫﺎﻱ‬
‫ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﻣﺮﺑﻮﻁ ﺑﻪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺧﻮﺩﺗﺎﻥ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻧﻤﺎﻳﻴﺪ ‪ .‬ﺳﭙﺲ ﺭﻭﻱ ﺻﻔﺤﻪ ﺁﻥ ﻛﻠﻴﻚ ﺭﺍﺳﺖ ﻧﻤﺎﻳﻴﺪ‬
‫ﻭ ﮔﺰﻳﻨﻪ ﻱ ‪ New Stored procedure‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻧﻤﺎﻳﻴـﺪ‪.‬ﺩﺭﺻـﻔﺤﻪ ﻱ ﺑـﺎﺯ ﺷـﺪﻩ )ﺷـﻜﻞ ‪ (٦‬ﻋﺒـﺎﺭﺕ ﺯﻳـﺮ ﺭﺍ‬
‫ﻧﻮﺷﺘﻪ ﻭ ﺁﻧﺮﺍ ﺫﺧﻴﺮﻩ ﻛﻨﻴﺪ ‪:‬‬
‫)‪Create Procedure rpt_ID_Diff(@Sell_ID int‬‬
‫‪As‬‬
‫‪select distinct (myTestDB.dbo.tblSell.Sell_No - myTestDB.dbo.tblEntry.Entry_No) as final_result‬‬
‫‪from myTestDB.dbo.tblEntry LEFT OUTER JOIN myTestDB.dbo.tblSell‬‬
‫‪ON (myTestDB.dbo.tblEntry.ID = myTestDB.dbo.tblSell.ID) where‬‬
‫‪myTestDB.dbo.tblSell.ID=@Sell_ID‬‬
‫‪Return‬‬
‫‪GO‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪6‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

. Enterprise manager ‫ – ﻧﺤﻮﻩ ﻱ ﺍﻳﺠﺎﺩ ﺭﻭﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﻣﺤﻴﻂ‬٦ ‫ﺷﻜﻞ‬

: ‫ ﻋﺒﺎﺭﺕ ﺯﻳﺮ ﺭﺍ ﻭﺍﺭﺩ ﻛﺮﺩ‬Query analyzer ‫ﺑﺮﺍﻱ ﺗﺴﺖ ﻛﺮﺩﻥ ﺁﻥ ﻫﻢ ﻣﻲ ﺗﻮﺍﻥ ﺩﺭ‬

exec rpt_ID_diff 2

: ‫ﺳﭙﺲ ﺩﺭ ﻳﻚ ﭘﺮﻭﮊﻩ ﺟﺪﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺯ ﺁﻥ ﺍﺳﺘﻔﺎﺩﻩ ﺧﻮﺍﻫﻴﻢ ﻛﺮﺩ‬

private void Page_Load(object sender, System.EventArgs e)


{
SqlConnection MyConnection = new
SqlConnection("server=(local);uid=sa;pwd=;database=MyTestDB");

//Calling the DisplayCustomers stored procedure


SqlDataAdapter MyCommand = new
SqlDataAdapter("rpt_ID_Diff", MyConnection);
MyCommand.SelectCommand.CommandType = CommandType.StoredProcedure;

//Adding the SQL parameter


MyCommand.SelectCommand.Parameters.Add(
new SqlParameter("@Sell_ID",SqlDbType.Int ));
//Specifying the parameter value
MyCommand.SelectCommand.Parameters["@Sell_ID"].Value = 3;

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
7 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫;)(‪DataSet DS = new DataSet‬‬


‫;)"‪MyCommand.Fill(DS, "tblSell‬‬
‫‪// write & show final_result value‬‬
‫( ‪Response.Write‬‬ ‫‪"final_result = "+‬‬
‫)(‪DS.Tables["tblSell"].Rows[0][0].ToString‬‬ ‫; )‬

‫}‬

‫ﺍﻧﺠﺎﻡ ﻳﻚ ﺳﺮﻱ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ﺭﻳﺎﺿﻲ ﺭﻭﻱ ﻓﻴﻠﺪﻫﺎ ‪:‬‬

‫ﮔﺎﻫﻲ ﺍﺯ ﺍﻭﻗﺎﺕ ﻻﺯﻡ ﺍﺳﺖ ﺗﺎ ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺟﻤﻊ ﻛﻞ ﻋﺪﺩﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ ﻳﻚ ﺳﺘﻮﻥ ) ﻓﻴﻠﺪ ( ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﻢ ﻭ‬
‫ﻳﺎ ﻣﻴﺎﻧﮕﻴﻦ ﻫﺎ ﻭ ﺍﻣﺜﺎﻝ ﺍﻳﻨﮕﻮﻧﻪ ﻋﻤﻠﻴﺎﺕ ‪ .‬ﻳﻜﻲ ﺍﺯ ﺭﺍﻩ ﺣﻞ ﻫﺎ ﺁﻥ ﺑﺪﻳﻦ ﺻﻮﺭﺕ ﺍﺳﺖ ﻛﻪ ﻛﻞ ﺍﻋﺪﺍﺩ ﻓﻴﻠﺪ ﺭﺍ ﺑﺨﻮﺍﻧﻴﻢ‬
‫ﻭ ﺳﭙﺲ ﻋﻤﻠﻴﺎﺕ ﺭﻭﻱ ﺁﻥ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ ﻭ ﻳﺎ ﺭﺍﻩ ﺩﻳﮕﺮ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﺳـﺘﻮﺭﺍﺕ ﻣﺨﺼـﻮﺹ ‪ SQL‬ﺑـﺮﺍﻱ ﺍﻳﻨﮕﻮﻧـﻪ‬
‫ﻛﺎﺭﻫﺎ ﻣﻲ ﺑﺎﺷﺪ‪ .‬ﻣﺜﺎﻝ ﺯﻳﺮ ﻧﺤﻮﻩ ﻱ ﺍﻧﺠﺎﻡ ﺍﻳﻨﮕﻮﻧﻪ ﻋﻤﻠﻴﺎﺕ ﺭﺍ ﺑﻴﺎﻥ ﻣﻲ ﻛﻨﺪ‪.‬‬

‫ﻣﺜﺎﻝ ‪: ٣‬‬

‫ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺑﺰﺭﮔﺘﺮﻳﻦ ﻋﺪﺩ ﻣﻮﺟﻮﺩ ﺩﺭ ﻓﻴﻠﺪ ‪ myTestDB.dbo.tblSell.ID‬ﻛﻪ ﺩﺭ ﻣﺜﺎﻝ ﺍﻭﻝ ﺍﻳﺠـﺎﺩ ﺷـﺪ ﺭﺍ ﺑﺪﺳـﺖ‬
‫ﺁﻭﺭﻳﻢ‪.‬‬

‫ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺭﺍﻩ ﺣﻞ ﻫﺎﻱ ﺯﻳﺎﺩﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﻳﻜﻲ ﺍﺯ ﺁﻧﻬﺎ ﺩﺭ ﺯﻳﺮ ﺑﺮﺭﺳﻲ ﺧﻮﺍﻫﺪ ﺷﺪ‪ .‬ﺑـﺮﺍﻱ‬
‫ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﻳﻚ ﻣﻘﺪﺍﺭ ﺍﺯ ﺩﻳﺘﺎﺑﻴﺲ ﺍﺯ ﻣﺘـﺪ ‪ ExecuteScalar‬ﻣﺮﺑـﻮﻁ ﺑـﻪ ﺷـﻲﺀ ‪ SqlCommand‬ﺍﺳـﺘﻔﺎﺩﻩ‬
‫ﻣﻲ ﮔﺮﺩﺩ‪.‬‬

‫)‪private void Page_Load(object sender, System.EventArgs e‬‬


‫{‬
‫‪SqlConnection MyConnection = new‬‬
‫;)"‪SqlConnection("server=(local);uid=sa;pwd=;database=MyTestDB‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪8‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫‪SqlCommand newCmd = new‬‬


‫;)‪SqlCommand("select MAX(tblSell.ID) from tblSell",MyConnection‬‬

‫;)(‪MyConnection.Open‬‬
‫;)(‪int intRes = (int)newCmd.ExecuteScalar‬‬
‫;)(‪MyConnection.Close‬‬

‫; )‪Response.Write(intRes‬‬
‫}‬

‫ﺭﻭﺷﻲ ﺩﻳﮕﺮ ﺑﺮﺍﻱ ﻓﺮﺳﺘﺎﺩﻥ ﻣﺘﻐﻴﺮﻫﺎ ﺑﻪ ﻋﺒﺎﺭﺍﺕ ‪: T-SQL‬‬

‫ﺩﺭ ﻓﺼﻞ ﻗﺒﻞ ﺑﺮﺍﻱ ﻣﺜﺎﻝ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻛﺮﺩﻥ ﻳﻚ ﺳﺮﻱ ﺭﻛﻮﺭﺩ ﺍﺯ ﺩﻳﺘﺎﺑﻴﺲ ﺍﺯﺩﺳﺘﻮﺭﺍﺗﻲ ﻣﺎﻧﻨﺪ ﺯﻳﺮ ﺍﺳـﺘﻔﺎﺩﻩ‬
‫ﻣﻲ ﻛﺮﺩﻳﻢ ‪:‬‬

‫;"'" ‪strSQL = " select * from tbl1 where field1='"+ text1.text +‬‬

‫ﺑﻪ ﺟﺎﻱ ﺍﻳﻨﻜﻪ ‪ Text1.text‬ﺭﺍ ﺑﺪﻳﻦ ﺻﻮﺭﺕ ﺑﻪ ﻋﺒﺎﺭﺕ ﭘﺎﺱ ﻛﻨﻴﻢ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﭘﺎﺭﺍﻣﺘﺮﻫﺎ ﻫﻢ ﺑﻪ ﺻـﻮﺭﺕ ﺯﻳـﺮ‬
‫ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻮﺩ ‪:‬‬

‫ﻣﺜﺎﻝ ‪:٤‬‬

‫ﺩﺭ ﺍﻳﻦ ﻣﺜﺎﻝ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺭﻭﺷﻲ ﻣﺘﻔﺎﻭﺕ ﻧﺴﺒﺖ ﺑﻪ ﻣﺜﺎﻝ ﻳﻚ ‪ ،‬ﻣﺤﺘﻮﻳﺎﺕ ﺗﻜﺴﺖ ﺑﺎﻛﺲ ﻫـﺎ ﺭﺍ‬
‫ﺍﻟﺒﺘﻪ ﺑﺮﺍﻱ ﻭﺭﻭﺩ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺟﺪﻭﻝ ‪ myTestDB.dbo.tblEntry.ID‬ﻣﻮﺭﺩ ﺑﺮﺭﺳﻲ ﻗﺮﺍﺭ ﺩﻫﻴﻢ‪.‬‬

‫ﻓﺮﻡ ﻭﺭﻭﺩ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺑﻪ ﺷﻜﻞ ﺯﻳﺮ ﺁﻣﺎﺩﻩ ﻛﺮﺩﻩ ﻭ ﻧﺎﻡ ﺗﻜﺴﺖ ﺑﺎﻛﺲ ﻫﺎ ﺭﺍ ﺑﻪ ﻋﺒﺎﺭﺍﺗﻲ ﻣﻌﻨﺎ ﺩﺍﺭ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﻴـﺪ‬
‫)ﺍﺯ ﺟﺪﻭﻟﻲ ﺑﺎ ‪ BorderSize=0‬ﻫﻢ ﻣﻲ ﺗـﻮﺍﻥ ﺑـﺮﺍﻱ ﻣﺮﺗـﺐ ﻛـﺮﺩﻥ ﻋﻨﺎﺻـﺮ ﺻـﻔﺤﻪ ﺍﺳـﺘﻔﺎﺩﻩ ﻛـﺮﺩ( ‪ ،‬ﺳـﭙﺲ‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪9‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ ﺭﺍ ﺑﻪ ﺗﻜﺴﺖ ﺑﺎﻛﺲ ﻫﺎ ﻣـﺮﺗﺒﻂ ﻧﻤﺎﻳﻴـﺪ ﻭ ﻳـﻚ ﺩﻛﻤـﻪ ﻫـﻢ ﺑـﺮﺍﻱ ﺍﺿـﺎﻓﻪ ﻛـﺮﺩﻥ‬RequiredFieldValidators
.‫ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺩﻳﺘﺎﺑﻴﺲ ﺑﻪ ﺻﻔﺤﻪ ﺍﺿﺎﻓﻪ ﻧﻤﺎﻳﻴﺪ ﻭ ﻳﻚ ﺩﻳﺘﺎﮔﺮﻳﺪ ﺑﺮﺍﻱ ﻧﻤﺎﻳﺶ ﺁﻧﻬﺎ‬

.‫ ﺩﺭ ﺣﺎﻝ ﻃﺮﺍﺣﻲ‬٤ ‫ – ﻓﺮﻡ ﻭﺭﻭﺩ ﺍﻃﻼﻋﺎﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺜﺎﻝ‬٧ ‫ﺷﻜﻞ‬

private void btnAdd_Click(object sender, System.EventArgs e)


{
SqlConnection sqlconnectionMyTestDB = new
SqlConnection("server=(local);uid=sa;pwd=;database=MyTestDB");
SqlDataAdapter sqldataadapterEntry = new
SqlDataAdapter("select * from tblEntry", sqlconnectionMyTestDB);

String insertCmd = "INSERT INTO tblEntry(id, Entry_no) VALUES( " +


"@Id, @Entry_No )";

SqlCommand sqlcommandEntry = new SqlCommand(insertCmd,


sqlconnectionMyTestDB);

sqlcommandEntry.Parameters.Add(
new SqlParameter("@Id", SqlDbType.Int));
sqlcommandEntry.Parameters["@Id"].Value = txtID.Text;

sqlcommandEntry.Parameters.Add(
new SqlParameter("@Entry_No", SqlDbType.Int));
sqlcommandEntry.Parameters["@Entry_No"].Value = txt_Entry_No.Text;

sqlcommandEntry.Connection.Open();
sqlcommandEntry.ExecuteNonQuery();
sqlcommandEntry.Connection.Close();

DataSet datasetEntry = new DataSet();


sqldataadapterEntry.Fill(datasetEntry, "tblEntry");

DataGrid1.DataSource=datasetEntry.Tables["tblEntry"].DefaultView;
DataGrid1.DataBind();
DataGrid1.Visible = true;

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
10 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲ ﻓﺮﻣﺎﻳﻴﺪ ﺍﻳﻦ ﺭﻭﺵ ﺷﺒﻴﻪ ﺑﻪ ﺭﻭﺷﻲ ﺍﺳﺖ ﻛﻪ ﺑﺮﺍﻱ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺍﻱ ﻛـﻪ‬
‫ﭘﺎﺭﺍﻣﺘﺮ ﻣﻲ ﮔﺮﻓﺘﻨﺪ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬

‫ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻳﺘﺎﺑﻴﺲ ﻫﺎﻱ ‪: OLE DB‬‬

‫ﺑــﺮﺍﻱ ﺍﺳــﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻳﺘــﺎﺑﻴﺲ ﻫــﺎﻱ ‪ OLE DB‬ﻣﺎﻧﻨــﺪ ﺍﻛﺴــﺲ ﺩﺭ ‪ ADO.NET‬ﺑﺎﻳــﺪ ﺍﺯ ﻓﻀــﺎﻱ ﻧــﺎﻡ‬
‫‪ System.Data.OleDb‬ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‪ .‬ﺑـﺎ ﺍﺳـﺘﻔﺎﺩﻩ ﺍﺯ ﻛـﻼﺱ ‪System.Data.OleDb.OleDbCommand‬‬
‫ﻣﻲ ﺗﻮﺍﻥ ﻳﻚ ﺳﺮﻱ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ‪ SQL‬ﻣﺎﻧﻨﺪ ‪ Update ، Insert ، Select‬ﻭ ‪ Delete‬ﻭ ﻫﻤﭽﻨﻴﻦ ﺍﺟﺮﺍﻱ ﺭﻭﻳﻪ‬
‫ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩ‪.‬‬

‫ﻣﺜﺎﻝ ‪:٥‬‬

‫ﺩﺭ ﻣﺜﺎﻝ ﺯﻳﺮ ﻗﺼﺪ ﺩﺍﺭﻳﻢ ﻳﻚ ﺳﺮﻱ ﺍﺯ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺩﺭﻭﻥ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﻛﺴﺲ ﺫﺧﻴﺮﻩ ﻛﻨﻴﻢ‪.‬‬
‫ﺍﺑﺘﺪﺍ ﺍﻛﺴﺲ ‪ XP‬ﺭﺍ ﺑﺎﺯ ﻛﻨﻴﺪ ﻭ ﺳﭙﺲ ﺍﺯ ﻣﻨﻮﻱ ﻓﺎﻳﻞ ﮔﺰﻳﻨﻪ ﻱ ‪ New‬ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴـﺪ ﻭ ﺍﺯ ﭘﻨـﻞ ﺳـﻤﺖ ﺭﺍﺳـﺖ‬
‫ﺻـﻔﺤﻪ ﺭﻭﻱ ﮔﺰﻳﻨـﻪ ﻱ ‪ Blank DataBase‬ﻛﻠﻴـﻚ ﻧﻤﺎﻳﻴـﺪ ﺗـﺎ ﻳـﻚ ﺑﺎﻧــﻚ ﺟﺪﻳـﺪ ﺧـﺎﻟﻲ ﺑـﺮﺍﻱ ﻣﺜـﺎﻝ ﺑـﻪ ﻧــﺎﻡ‬
‫‪ access_db.mdb‬ﺍﻳﺠﺎﺩ ﺷﻮﺩ‪ .‬ﺩﺭ ﺻـﻔﺤﻪ ﻱ ﺩﻳـﺎﻟﻮﮒ ﺑـﺎﺯ ﺷـﺪﻩ )ﺷـﻜﻞ ‪ (٨‬ﺭﻭﻱ ﺁﻳـﺘﻢ ‪Create Table in‬‬
‫‪ design View‬ﻛﻠﻴــﻚ ﻧﻤﺎﻳﻴــﺪ ﺗــﺎ ﺻــﻔﺤﻪ ﻱ ﻃﺮﺍﺣــﻲ ﺩﻳﺘــﺎﺑﻴﺲ ﻛــﻪ ﺷــﺒﻴﻪ ﻣﺤــﻴﻂ ﻃﺮﺍﺣــﻲ ﺩﻳﺘــﺎﺑﻴﺲ ﺩﺭ‬
‫‪ SQL-Server‬ﺍﺳﺖ ﺑﺎﺯ ﺷﻮﺩ ‪ .‬ﺳﭙﺲ ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﺯﻳﺮ )ﺷﻜﻞ ‪ (٩‬ﺟﺪﻭﻝ ﺭﺍ ﻃﺮﺍﺣـﻲ ﻛﻨﻴـﺪ‪ .‬ﺳـﭙﺲ ﭘﻨﺠـﺮﻩ ﺭﺍ‬
‫ﺑﻨﺪﻳﺪ ﺗﺎ ﺻﻔﺤﻪ ﻱ ﺫﺧﻴﺮﻩ ﻛﺮﺩﻥ ﻧﺎﻡ ﺟﺪﻭﻝ )ﺷﻜﻞ‪ ( ١٠‬ﻇـﺎﻫﺮ ﺷـﻮﺩ ﻭ ﻧـﺎﻡ ‪ tblEntry‬ﺭﺍ ﻭﺍﺭﺩ ﻧﻤﺎﻳﻴـﺪ‪ .‬ﺳـﭙﺲ‬
‫ﺍﻛﺴﺲ ﺍﺯ ﺷﻤﺎ ﺩﺭ ﻣﻮﺭﺩ ﺍﻳﺠﺎﺩ ‪ Primary key‬ﺳﻮﺍﻝ ﻣﻲ ﻛﻨﺪ )ﺷﻜﻞ ‪.(١١‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪11‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﺷﻜﻞ ‪ – ٨‬ﺻﻔﺤﻪ ﻱ ﺧﻮﺍﺹ ﺩﻳﺘﺎﺑﻴﺲ ﺧﺎﻟﻲ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺩﺭ ﺍﻛﺴﺲ‪.‬‬

‫ﺷﻜﻞ ‪ – ٩‬ﻃﺮﺍﺣﻲ ﺟﺪﻭﻝ ﺟﺪﻳﺪ ﺩﺭ ﺍﻛﺴﺲ‪.‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪12‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﺷﻜﻞ ‪ -١٠‬ﻭﺍﺭﺩ ﻛﺮﺩﻥ ﻧﺎﻡ ﺟﺪﻭﻝ ﺟﺪﻳﺪ ﺑﺎﻧﻚ ﺍﻛﺴﺲ‪.‬‬

‫ﺷﻜﻞ ‪ –١١‬ﺻﻔﺤﻪ ﻱ ﺗﺎﻳﻴﺪ ﺍﻳﺠﺎﺩ ﻓﻴﻠﺪ ‪. Primary key‬‬

‫ﺁﻧﺮﺍ ﺗﺎﻳﻴﺪ ﻧﻜﻨﻴﺪ! ﭼﻮﻥ ﻳﻚ ﻓﻴﻠﺪ ﭘﻴﺶ ﻓﺮﺽ ﺩﺭﺳﺖ ﻣﻲ ﻛﻨﺪ )ﺍﻟﺒﺘﻪ ﺍﻳﻦ ﻣﻮﺿﻮﻉ ﺑﺴﺘﮕﻲ ﺑﻪ ﺩﻳﺘﺎﺑﻴﺲ ﺷـﻤﺎ ﻫـﻢ‬
‫ﺩﺍﺭﺩ‪ .(...‬ﺑﺮﺍﻱ ﺩﺭﺳﺖ ﻛﺮﺩﻥ ‪ Primary key‬ﻫﻤﺎﻧﻨـﺪ ‪ SQL-Server‬ﻣـﻲ ﺗـﻮﺍﻥ ﻋﻤـﻞ ﻛـﺮﺩ )ﻳﻌﻨـﻲ ﺭﻭﻱ ﻓﻴﻠـﺪ‬
‫ﺩﻟﺨﻮﺍﻩ ﻣﻲ ﺗﻮﺍﻥ ﻛﻠﻴﻚ ﻛﺮﺩ ﻭ ﺳﭙﺲ ﺍﺯ ﻣﻨـﻮﻱ ﻇـﺎﻫﺮ ﺷـﺪﻩ ﮔﺰﻳﻨـﻪ ﻱ ‪ Primary key‬ﺭﺍ ﺍﻧﺘﺨـﺎﺏ ﻧﻤـﻮﺩ‪ (.‬ﻳـﻚ‬
‫‪ Primary key‬ﺭﻭﻱ ﻓﻴﻠﺪ ‪ ID‬ﺩﺭﺳﺖ ﻛﻨﻴﺪ‪ .‬ﻛﺎﺭ ﺧﻮﺩ ﺭﺍ ﺫﺧﻴﺮﻩ ﻛﻨﻴﺪ ﺗﺎ ﺍﺯ ﺍﻳﻦ ﺩﻳﺘﺎﺑﻴﺲ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺩﺭ ﻣﺜﺎﻟﻬﺎﻱ‬
‫ﺑﻌﺪﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﻴﻢ ‪.‬‬

‫ﻳﻚ ﭘﺮﻭﮊﻩ ﻱ ‪ ASP.NET‬ﺩﻳﮕﺮ ﺑﺎﺯ ﻛﻨﻴﺪ ﻭ ﺳﭙﺲ ﺷﻜﻞ ﻇﺎﻫﺮﻱ ﺁﻧﺮﺍ ﻫﻤﺎﻧﻨﺪ ﻣﺜﺎﻝ ﻗﺒﻠﻲ ﻃﺮﺍﺣﻲ ﻧﻤﺎﻳﻴﺪ )ﺷﻜﻞ‬
‫‪. (١٢‬‬
‫ﺳﭙﺲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﺪ ﺯﻳﺮ ﻣﻲ ﺗﻮﺍﻥ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺟﺪﻳﺪ ﺭﺍ ﺑﻪ ﺁﻥ ﺍﺿﺎﻓﻪ ﻛﺮﺩ‪.‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪13‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

. ‫ ﺩﺭ ﺣﺎﻟﺖ ﻃﺮﺍﺣﻲ‬٥ ‫ – ﺷﻜﻞ ﻇﺎﻫﺮﻱ ﻣﺜﺎﻝ‬١٢ ‫ﺷﻜﻞ‬

: ‫ﻗﺒﻞ ﺍﺯ ﻫﺮ ﻛﺎﺭﻱ ﻓﻀﺎﻱ ﻧﺎﻡ ﻣﺮﺑﻮﻃﻪ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻠﺤﻖ ﻣﻲ ﻛﻨﻴﻢ‬


using System.Data.OleDb;

: ‫ ﺧﻮﺍﻫﻴﻢ ﻧﻮﺷﺖ‬Add ‫ﻭ ﺩﺭ ﺭﺧﺪﺍﺩ ﻛﻠﻴﻚ ﻣﺮﺑﻮﻁ ﺑﻪ ﺩﻛﻤﻪ‬

private void btnAdd_Click(object sender, System.EventArgs e)


{
//g:\inetpub\wwwroot\classes\ch09\ex05\acess_db.mdb
// or :
//MapPath : Returns the physical file path that corresponds to
//the specified virtual path on the Web server.
String FilePath;
FilePath = Server.MapPath("acess_db.mdb");

// Connect to Database
OleDbConnection cnAccess = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+ FilePath );
cnAccess.Open();

//Make the insert statement


string sInsertSQL = "insert into tblEntry values(" +
txtID.Text + "," + txt_Entry_No.Text + ")";

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
14 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

//Make the OleDbCommand object


OleDbCommand cmdInsert = new OleDbCommand(sInsertSQL,cnAccess);

// This not a query so we do not expect any return data so use


// the ExecuteNonQuery method
cmdInsert.ExecuteNonQuery();

// displaying data
OleDbDataAdapter sqldataadapterEntry =
new OleDbDataAdapter("select * from tblEntry",cnAccess);
DataSet datasetEntry = new DataSet();
sqldataadapterEntry.Fill(datasetEntry, "tblEntry");

DataGrid1.DataSource=datasetEntry.Tables["tblEntry"].DefaultView;
DataGrid1.DataBind();
DataGrid1.Visible = true;

‫ ﺍﻛﺴـﺲ ﺑـﻪ‬mdb ‫ ﺑﺮﺍﻱ ﻣﺸـﺨﺺ ﻛـﺮﺩﻥ ﻣﺴـﻴﺮ ﻓﻴﺰﻳﻜـﻲ ﻓﺎﻳـﻞ‬ASP ‫ﺩﺭ ﻣﺜﺎﻝ ﻓﻮﻕ ﺍﺯ ﻫﻤﺎﻥ ﺭﻭﺵ ﻗﺪﻳﻤﻲ‬
‫ ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﻣﻼﺣﻈﻪ ﻣﻲ ﻓﺮﻣﺎﻳﻴﺪ ﻫﻤﻪ ﭼﻴـﺰ ﻣﺎﻧﻨـﺪ ﻗﺒـﻞ ﺍﺳـﺖ‬. ‫ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩﻩ ﺍﻳﻢ‬Server.MapPath ‫ﺻﻮﺭﺕ‬
. ‫ ﻗﺮﺍﺭ ﮔﺮﻓﺘﻪ ﺍﺳﺖ ﻭ ﺗﻤﺎﻡ ﺗﻮﺿﻴﺤﺎﺕ ﺁﻧﻬﺎ ﻫﻢ ﺗﻜﺮﺍﺭﻱ ﻣﻲ ﺑﺎﺷﺪ‬OleDb ‫ ﻋﺒﺎﺭﺕ‬Sql ‫ﻓﻘﻂ ﺑﺠﺎﻱ‬

‫ ﻓﻘـﻂ‬Recordset ‫ ﻣﻲ ﺗﻮﺍﻥ ﻣﺎﻧﻨـﺪ ﻳـﻚ‬System.Data.OleDb.OleDbDataReader ‫ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﻼﺱ‬


.‫ ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﻓﻘﻂ ﻳﻚ ﺭﻛﻮﺭﺩ ﺭﺍ ﺧﻮﺍﻧﺪ‬.‫ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ‬ADO ‫ﺧﻮﺍﻧﺪﻧﻲ ﺳﻴﺴﺘﻢ ﻗﺒﻠﻲ‬

:٦ ‫ﻣﺜﺎﻝ‬

. ‫ ﺑﺎ ﻫﻢ ﻣﺮﻭﺭ ﻣﻲ ﻛﻨﻴﻢ‬OleDbDataReader ‫ﺩﺭ ﺯﻳﺮ ﻣﺜﺎﻟﻲ ﺭﺍ ﺍﺯ ﻧﺤﻮﻩ ﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻛﻼﺱ‬

: ‫ ﺭﻭﻱ ﻓﺮﻡ ﻗﺮﺍﺭ ﺩﻫﻴﺪ ﻭ ﺳﭙﺲ ﻓﻀﺎﻫﺎﻱ ﻧﺎﻡ ﺯﻳﺮ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺍﺿﺎﻓﻪ ﻧﻤﺎﻳﻴﺪ‬Label ‫ﻳﻚ‬
using System.Data.OleDb ;
using System.Text; // for StringBuilder

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
15 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ ﻣﺮﺑﻮﻁ ﺑﻪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﻛﺴﺲ ﺭﺍ ﻛﻪ ﺩﺭ ﻃﻲ ﻣﺜﺎﻝ ﻗﺒـﻞ‬tblEntry ‫ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﺗﻚ ﺗﻚ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺟﺪﻭﻝ‬
‫ ﺍﻳﺠﺎﺩ ﻣﻲ‬HTML ‫ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﺧﻮﺍﻧﺪﻩ ﻭ ﺁﻧﺮﺍ ﺩﺭ ﻳﻚ ﺟﺪﻭﻝ ﻛﻪ ﺧﻮﺩﻣﺎﻥ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﮕﻬﺎﻱ‬، ‫ﺍﻳﺠﺎﺩ ﻛﺮﺩﻩ ﺍﻳﻢ‬
.‫ ﻧﻤﺎﻳﺶ ﺩﻫﻴﻢ‬، ‫ﻛﻨﻴﻢ‬
‫ ﺑـﻪ ﺍﻳـﻦ ﺟﻬـﺖ ﺩﺭ ﺑﺮﻧﺎﻣـﻪ ﺍﺳـﺘﻔﺎﺩﻩ ﻛـﺮﺩﻩ ﺍﻳـﻢ ﻛـﻪ ﻣـﻲ ﺧـﻮﺍﻫﻴﻢ ﺍﺯ ﻛـﻼﺱ‬System.Text ‫ﺍﺯ ﻓﻀﺎﻱ ﻧـﺎﻡ‬
‫ ﺩﺭ ﻣـﻮﺭﺩ ﺟﻤـﻊ ﻛـﺮﺩﻥ‬+ ‫ ﺭﻭﺷـﻲ ﺷـﻴﻚ )!( ﻭ ﻛـﺎﺭﺁﺗﺮ ﻧﺴـﺒﺖ ﺑـﻪ ﻋﻼﻣـﺖ‬.‫ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤـﺎﻳﻴﻢ‬StringBuilder
.‫ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻳﻦ ﻛﻼﺱ ﻣﻲ ﺑﺎ ﺷﺪ ﻛﻪ ﺩﺭ ﻣﺜﺎﻝ ﺯﻳﺮ ﺩﺭ ﻋﻤﻞ ﺑﻜﺎﺭ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺍﺳﺖ‬string

private void Page_Load(object sender, System.EventArgs e)


{
String FilePath;
FilePath = Server.MapPath("acess_db.mdb");

// Connect to Database
OleDbConnection cnAccess = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+ FilePath );

cnAccess.Open();

//Make the select statement


string sSelectSQL = "select * from tblEntry";
//'Make the OleDbCommand object
OleDbCommand cmdSelect = new OleDbCommand(sSelectSQL,cnAccess);

//This query should return an OleDbDataReader so we use the


//ExecuteReader method

StringBuilder sbResults = new StringBuilder();


OleDbDataReader drEmp = cmdSelect.ExecuteReader();

drEmp.Read();

sbResults.Append ("<Table>");
do
{
sbResults.Append ("<TR><TD>");
sbResults.Append ( drEmp.GetInt32(0).ToString());
sbResults.Append ("</TD><TD>");
sbResults.Append ( drEmp.GetInt32(1).ToString() );
sbResults.Append ("</TD><TR>");

}while (drEmp.Read());
sbResults.Append ("</Table>");

lblResult.Text = sbResults.ToString();
}

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
16 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﻛﻼﺱ ‪: OleDbDataAdapter‬‬

‫ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﺗﺎﺑﺤﺎﻝ ﻣﻼﺣﻈﻪ ﻛـﺮﺩﻩ ﺍﻳـﺪ ‪ Data Adapter‬ﺑﻴـﺎﻧﮕﺮ ﺩﺳـﺘﻮﺭﺍﺕ ﻭ ﺍﺗﺼـﺎﻻﺗﻲ ﺍﺳـﺖ ﻛـﻪ ﺑـﺮﺍﻱ‬
‫ﭘﻴﻤﺎﻳﺶ ﺩﻳﺘﺎﺑﻴﺲ ﺑﻜﺎﺭ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ ‪ .‬ﺍﻳﻦ ﻛﻼﺱ ﺳﻪ ﺧﺎﺻـﻴﺖ ﺩﺳـﺘﻮﺭﻱ ﺩﺍﺭﺩ ﻛـﻪ ﺑـﺮﺍﻱ ﺑـﻪ ﺭﻭﺯ ﺭﺳـﺎﻧﻲ‬
‫ﺩﻳﺘﺎﺑﻴﺲ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ‪:‬‬
‫‪ : InsertCommand‬ﺑﻴﺎﻧﮕﺮ ﭘﺮﺳﺠﻮ ﻳﺎ ﺭﻭﻳﻪ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺍﻱ ﺍﺳﺖ ﻛﻪ ﺑﺮﺍﻱ ﺍﺿﺎﻓﻪ ﻛـﺮﺩﻥ ﺭﻛـﻮﺭﺩ ﺟﺪﻳـﺪ ﺑـﻪ‬
‫ﺩﻳﺘﺎﺑﻴﺲ ﺑﻜﺎﺭ ﺑﺮﺩﻩ ﻣﻲ ﺷﻮﺩ‪.‬‬
‫‪ : SelectCommad‬ﺑﻴﺎﻧﮕﺮ ﻳﻚ ﻋﺒـﺎﺭﺕ ‪ SQL‬ﺍﺳـﺖ ﻛـﻪ ﺑـﺮﺍﻱ ﺍﻧﺘﺨـﺎﺏ ﺭﻛﻮﺭﺩﻫـﺎ ﺍﺯ ﺑﺎﻧـﻚ ﺍﻃﻼﻋـﺎﺗﻲ ﺑﻜـﺎﺭ‬
‫ﻣﻲ ﺭﻭﺩ‪.‬‬
‫‪ : DeleteCommand‬ﺑﻴﺎﻧﮕﺮ ﻳﻚ ﻋﺒﺎﺭﺕ ‪ SQL‬ﺍﺳﺖ ﻛﻪ ﺑﺮﺍﻱ ﺣﺬﻑ ﺭﻛﻮﺭﺩﻫﺎ ﺍﺯ ﺩﻳﺘﺎﺳﺖ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ‪.‬‬

‫ﻛــــــــــﻼﺱ ﻫــــــــــﺎﻱ ‪ System.Data.DataSet‬ﻭ ‪ System.Data.DataTable‬ﻭ‬


‫‪ System.Data.DataRow‬ﻭ ‪: System.Data.DataColumn‬‬

‫‪ DataSet‬ﻛﻼﺳﻲ ﺍﺳﺖ ﻋﻤﻮﻣﻲ ﻛﻪ ﺑﻮﺳﻴﻠﻪ ﻱ ‪ .Net Framework‬ﺗﻬﻴﻪ ﺷﺪﻩ ﺍﺳـﺖ‪ .‬ﺍﻳـﻦ ﻛـﻼﺱ ﺑـﺮ ﺭﻭﻱ‬
‫ﺳﻤﺖ ﻛﻼﻳﻨﺖ ﺑﺮﺍﻱ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﺭﻭﺷﻲ ﻛﻪ ﺑﺴﻴﺎﺭ ﻛﺎﺭﺑﺮﺩﻱ ﺗﺮ ﻭ ﻗﻮﻱ ﺗﺮ ﺍﺳﺖ ﻧﺴﺒﺖ ﺑﻪ ‪ADO‬‬
‫‪ Recordset‬ﻛﺎﺭﺑﺮﺩ ﺩﺍﺭﺩ‪ .‬ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻦ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ‪ DataSet‬ﺑﻪ ﻓﺮﻣﺖ ‪ XML‬ﻣﻮﺟﻮﺩ ﺑﻮﺩﻩ ﻭ ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺮﺍﻱ‬
‫ﺩﺳﺘﻴﺎﺑﻲ ﻭ ﻣﺪﻳﺮﻳﺖ ﺁﻣﺎﺩﻩ ﻣﻲ ﺑﺎﺷﻨﺪ‪ .‬ﻓﺮﻣـﺖ ‪ XML‬ﺁﻧـﺮﺍ ﺑـﺮﺍﻱ ﻛﺎﺭﺑﺮﺩﻫـﺎﻱ ﻭﺏ ﺑﺴـﻴﺎﺭ ﻣﻨﺎﺳـﺐ ﺳـﺎﺧﺘﻪ ﻭ‬
‫ﺩﺳﺘﻴﺎﺑﻲ ‪ Cross-Platform‬ﺭﺍ ﻣﻤﻜﻦ ﻣﻲ ﺳﺎﺯﺩ‪ DataSet .‬ﻗﺎﺑﻠﻴﺖ ﺫﺧﻴﺮﻩ ﺳـﺎﺯﻱ ﺍﺯ ﭼﻨـﺪﻳﻦ ﺟـﺪﻭﻝ ﻭ ﺣﻔـﻆ‬
‫ﺍﺭﺗﺒﺎﻃﺎﺕ ﺑﻴﻦ ﺁﻧﻬﺎ ﺍﺳﺖ‪ .‬ﺟﺪﺍﻭﻝ ﺩﺭ ﺍﺷﻴﺎﺀ ‪ DataTable‬ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﻧﺪ ﻭ ‪ DataRelation‬ﺑﻴﺎﻧﮕﺮ ﺍﺗﺒﺎﻃـﺎﺕ‬
‫ﺑﻴﻦ ﺟﺪﺍﻭﻝ ﺍﺳﺖ‪ .‬ﺩﺭ ﺷﻲﺀ ﻫﺎﻱ ‪ DataRow‬ﻭ ‪ DataColumn‬ﺑﻪ ﺗﺮﺗﻴـﺐ ‪ ،‬ﺭﺩﻳـﻒ ﻫـﺎ ﻭ ﺳـﺘﻮﻥ ﻫـﺎ ﺩﺭ ﻳـﻚ‬
‫ﺟﺪﻭﻝ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﻧﺪ )ﺷﻜﻞ ‪.(١٣‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪17‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﻣﺜﺎﻝ ‪:٧‬‬

‫ﻣﺜﺎﻟﻲ ﺩﺭ ﻣﻮﺭﺩ ﻧﺤﻮﻩ ﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﺷﻴﺎﺀ ‪ DataTable‬ﻭ ﺭﻭﺍﺑﻂ ﺑﻴﻦ ﺁﻧﻬﺎ ‪.‬‬
‫ﺩﺭ ﺍﻳﻦ ﻣﺜﺎﻝ ﻣﻲ ﺧﻮﺍﻫﻴﻢ ﻣﺜﺎﻝ ﻗﺒﻞ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﺷﻴﺎﺀ ﺫﻛﺮ ﺷﺪﻩ ﺩﺭ ﻗﻤﺴﺖ ﺟﺎﺭﻱ ﺑﺎﺯ ﻧﻮﻳﺴﻲ ﻛﻨﻴﻢ ‪.‬‬

‫ﻳﻚ ‪ Label‬ﺭﻭﻱ ﻓﺮﻡ ﻗﺮﺍﺭ ﺩﻫﻴﺪ ﻭ ﺳﭙﺲ ﻓﻀﺎﻫﺎﻱ ﻧﺎﻡ ﺯﻳﺮ ﺭﺍ ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﺍﺿﺎﻓﻪ ﻧﻤﺎﻳﻴﺪ ‪:‬‬
‫; ‪using System.Data.OleDb‬‬
‫‪using System.Text; // for StringBuilder‬‬

‫ﺷﻜﻞ ‪ -١٣‬ﻣﺪﻝ ﺷﻲﺀﺍﻳﻲ ‪. DataSet‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪18‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

private void Page_Load(object sender, System.EventArgs e)


{

String FilePath;
FilePath = Server.MapPath("acess_db.mdb");

// Connect to Database
OleDbConnection cnAccess = new
OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;"+
"Data Source="+ FilePath );

cnAccess.Open();

// Make the select statement


string sSelectSQL = "select * from tblEntry";
//Make the OleDbCommand object
OleDbCommand cmdSelect = new OleDbCommand(sSelectSQL,cnAccess);
OleDbDataAdapter daEmp = new OleDbDataAdapter(cmdSelect);

DataSet dsEmp = new DataSet();

StringBuilder sbResults = new StringBuilder();

// Fill the data with the output of the cmdSelect command. Note
// that the dataadapter is associated with the command. We use
// the dataadapter to fill the dataset.
daEmp.Fill(dsEmp, "tblEntry");
PrintRows(dsEmp);
}
private void PrintRows(DataSet myDataSet)
{
StringBuilder sbResult =new StringBuilder();

// Iterate through all the DataTables in the DataSet


foreach( DataTable dtEmp in myDataSet.Tables )
{
sbResult.Append("<Table>");
// Iterate through all the DataRows in the DataTable
foreach( DataRow drEmp in dtEmp.Rows )
{
sbResult.Append("<TR>");
// Iterate through all the DataColumns in the DataRow
foreach (DataColumn dcEmp in dtEmp.Columns)
{
sbResult.Append("<TD>");
sbResult.Append(drEmp[dcEmp]);
sbResult.Append("</TD>");
}
sbResult.Append("</TR>");
}
sbResult.Append("</Table>");
}

lblResult.Text = sbResult.ToString();
}

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
([email protected]) ‫ ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ‬: ‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ‬
19 ASP.NET ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ‬
‫ﺷﺮﻛﺖ ﭘﻴﺸﮕﺎﻣﺎﻥ ﻓﻨﺎﻭﺭﻱ‬

‫ﺗﻤﺮﻳﻦ ‪:‬‬

‫‪ -١‬ﻣﺜﺎﻝ ‪ ٤‬ﺭﺍ ﻃﻮﺭﻱ ﺗﻐﻴﻴﺮ ﺩﻫﻴﺪ ﻛﻪ ﺑﺠﺎﻱ ‪ txtID‬ﻳﻚ ‪ Label‬ﻗﺮﺍﺭ ﮔﻴﺮﺩ ﻭ ﺑﺎ ﻫﺮ ﺑـﺎﺭ ﺍﺿـﺎﻓﻪ ﺷـﺪﻥ ﻳـﻚ‬
‫ﺁﻳﺘﻢ ﺑﻪ ﺩﻳﺘﺎﺑﻴﺲ ﻣﻘﺪﺍﺭ ﺁﻥ ﺑﻪ ﺻﻮﺭﺕ ﺧﻮﺩﻛﺎﺭ ﻳﻜﻲ ﺍﺿﺎﻓﻪ ﺷﻮﺩ ‪.‬‬
‫‪ New Post -٢‬ﻣﺮﺑﻮﻁ ﺑﻪ ﻓﻮﺭﻭﻡ ﺭﺍ ﺑﺎ ﺭﻭﻳﻪ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻛﻨﻴﺪ‪.‬‬
‫‪ -٣‬ﺩﺭ ﺟﺪﻭﻝ ‪ tblEntry‬ﺩﻳﺘﺎﺑﻴﺲ ‪ MyTestDB‬ﻛﻪ ﺩﺭ ﺍﻳﻦ ﻓﺼﻞ ﺍﻳﺠﺎﺩ ﺷﺪ ﻣﻴﺎﻧﮕﻴﻦ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ‬
‫ﻓﻴﻠﺪ ‪ Entry_No‬ﺭﺍ ﺭﻭﻱ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺩﻫﻴﺪ‪.‬‬
‫‪ -٤‬ﺟﺪﻭﻝ ‪ tblArea‬ﻓﻮﺭﻭﻡ ﺭﺍ ﺑﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻣﺎﻧﻨﺪ ﻧﺎﻡ ﻭ ﺁﻱ ﺩﻱ ﺑﺨﺶ ﻭ ﺷﺮﺡ ﺑﺨﺶ ﺟﺪﻳﺪ ﺍﻳﺠﺎﺩ ﻧﻤـﻮﺩﻩ ﻭ‬
‫ﺳﭙﺲ ﻓﺮﻡ ﻭﺭﻭﺩ ﺩﺍﺩﻩ ﻫﺎﻱ ﺁﻧﺮﺍ ﺧﻠﻖ ﻧﻤﺎﻳﻴﺪ‪.‬‬
‫‪ -٥‬ﺟﺪﻭﻝ ‪ tblPosts‬ﻓﻮﺭﻭﻡ ﺭﺍ ﺑﺎ ﻓﻴﻠﺪﻫﺎﻳﻲ ﻣﺎﻧﻨﺪ ﻧﺎﻡ ﺷﺨﺺ ﭘﺴﺖ ﻛﻨﻨﺪﻩ ‪ ،‬ﻋﻨﻮﺍﻥ ﭘﺴﺖ ‪ ،‬ﻣﺤﺘﻮﺍﻱ ﭘﺴﺖ ‪،‬‬
‫ﺗﺎﺭﻳﺦ ﭘﺴﺖ ‪ ،‬ﺁﻱ ﺩﻱ ﺑﺨﺸﻲ ﻛـﻪ ﺩﺭ ﺁﻥ ﭘﺴـﺖ ﺍﻧﺠـﺎﻡ ﻣـﻲ ﺷـﻮﺩ ﺍﻳﺠـﺎﺩ ﻧﻤـﻮﺩﻩ ﻭ ﺳـﭙﺲ ﻓـﺮﻡ ﻭﺭﻭﺩ‬
‫ﺩﺍﺩﻩ ﻫﺎﻱ ﺁﻧﺮﺍ ﺧﻠﻖ ﻧﻤﺎﻳﻴﺪ‪.‬‬

‫ﻛﻠﻴﻪ ﺣﻘﻮﻕ ﺍﻳﻦ ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻣﺘﻌﻠﻖ ﺑﻪ ﺳﺎﻳﺖ ﺁﻣﻮﺯﺵ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﭘﺮﺷﻴﺎ ﻣﻴﺒﺎﺷﺪ‬
‫ﺍﺳﺘﺎﺩ ﺩﻭﺭﻩ ‪ :‬ﻭﺣﻴﺪ ﻧﺼﻴﺮﻱ )‪([email protected]‬‬
‫‪20‬‬ ‫ﺟﺰﻭﻩ ﺁﻣﻮﺯﺷﻲ ﻛﻼﺱ ‪ASP.NET‬‬

You might also like