0% found this document useful (0 votes)
26 views20 pages

Asp Net ch09 Final

asp

Uploaded by

Mahmoud
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views20 pages

Asp Net ch09 Final

asp

Uploaded by

Mahmoud
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
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