490 likes | 865 Views
ASP.NET. โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com. ASP.NET. มาทำความรู้จักกับ ASP.NET VB.NET หรือ C# ภาษาไหนได้เปรียบกว่า เกี่ยวกับคอนโทรล การเชื่อมต่อฐานข้อมูล ตัวอย่างงาน ASP.NET. มาทำความรู้จักกับ ASP.NET. เป้าหมายของ ASP.NET
E N D
ASP.NET โดย อ. นัฐพงศ์ ส่งเนียม http://www.siam2dev.com xnattapong@hotmail.com
ASP.NET • มาทำความรู้จักกับ ASP.NET • VB.NET หรือ C# ภาษาไหนได้เปรียบกว่า • เกี่ยวกับคอนโทรล • การเชื่อมต่อฐานข้อมูล • ตัวอย่างงาน ASP.NET
มาทำความรู้จักกับ ASP.NET • เป้าหมายของ ASP.NET • ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง • ลงมือติดตั้งโปรแกรมพร้อมใช้งาน ASP.NET • ทดสอบ ASP.NET ก่อนทำงานจริง • คำถามต่างๆเกี่ยวกับ ASP.NET
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • เปลี่ยนโครงสร้างภาษาหลักทั้งหมด • เพิ่มคอนโทรล ทำให้สร้างเว็บได้ง่ายและรวดเร็วขึ้น • เปลี่ยนวิธีการปรับแต่งเว็บเซิร์ฟเวอร์และลงทะเบียนคอมโพเนนต์ • ปรับปรุงประสิทธิภาพการเชื่อมต่อฐานข้อมูล
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • เปลี่ยนโครงสร้างภาษาหลักทั้งหมด ภาษา VBScript ภาษา VB.NET และ C# โดยคอมไพเลอร์ของภาษา VB.NET และ C# นี้ จะถูกฝังติดมากับชุดโปรแกรม .NET Framework
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • เพิ่มคอนโทรลทำให้สร้างเว็บได้ง่ายและรวดเร็วขึ้น ASP.NET ได้พัฒนาสิ่งที่เรียกว่า “คอนโทรล” (Control) เพิ่มขึ้นมา เพื่อช่วยให้การสร้างเว็บเพจทำได้ง่ายขึ้น คอนโทรลมักถูกออกแบบมาทดแทนสคริปต์ที่เราต้องใช้ซ้ำๆ ยกตัวอย่างเช่น การเขียนสคริปต์วนรอบดึงข้อมูลในฐานข้อมูลออกมาแสดงเป็นตาราง HTML
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • การเขียนสคริปต์วนรอบดึงข้อมูลในฐานข้อมูลออกมาแสดงเป็นตาราง HTML ความวุ่นวายจะมีมากมายเต็มไปหมด -ตั้งแต่การสร้างรูปแบบตารางให้สวยงาม -การกำหนดว่าจะให้วนรอบตรงไหนอย่างไร ถ้าเป็นคอนโทรลใน ASP.NET แล้ว -จะใช้คำสั่งเพียงแค่ว่า “DataGrid” ข้อมูลก็จะถูกเติมลงในตารางอย่างสวยงานทันที
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • เปลี่ยนวิธีการปรับแต่งเว็บเซิร์ฟเวอร์และลงทะเบียนคอมโพเนนต์ -เปลี่ยนให้ค่าประจำเว็บเซิร์ฟเวอร์ถูกเก็บเอาไว้ในไฟล์ชื่อ config.web ในลักษณะของข้อมูลที่เป็น XML แทน ซึ่งก็หมายความว่า การปรับเปลี่ยนค่าประจำเว็บเซิร์ฟเวอร์เหล่านี้ จะเกิดขึ้นได้โดยไม่จำเป็นต้องเป็นการกระทำของบุคคลที่อยู่หน้าเครื่องเลย ขอเพียงแต่บุคคลผู้นี้มีสิทธิ์ในการเปิดไฟล์ config.web ก็สามารถแก้ไขได้แล้ว -การปรับแต่งค่าประจำเว็บเซิร์ฟเวอร์ต่างๆ อย่างเช่น ระยะเวลาในการทำงานของสคริปต์ (Script TimeOut), อายุของ session (Session TimeOut) จะถูกกำหนดเอาไว้ที่เว็บเซิร์ฟเวอร์ และไม่สามารถเปลี่ยนแปลงได้โดยบุคคลอื่น คนที่สามารถแก้ไขได้ จะต้องเป็นบุคคลที่อยู่หน้าเครื่องคอนโซล (console) เท่านั้น
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? - คอมโพเนนต์ จะมีการรอคอยให้เจ้าหน้าที่ผู้ดูแลเครื่องเซิร์ฟเวอร์ จัดการลงทะเบียนคอมโพเนนต์แทนเรา - คอมโพเนนต์ เราสามารถอัปโหลดไฟล์คอมโพเนนต์ เข้าไปเก็บยังไดเรกทอรี bin จากนั้นคอมโพเนนต์ก็จะถูกลงทะเบียนพร้อมใช้งานทันทีโดยอัตโนมัติ
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • ปรับปรุงประสิทธิภาพการเชื่อมต่อฐานข้อมูล • ADO • - การเชื่อมต่อฐานข้อมูลผ่าน ODBC ทั้งหมด ADO.NET - การเชื่อมต่อฐานข้อมูลผ่าน OLEDB.NET Provider แทน
ASP.NET เปลี่ยนแปลงอะไรไปจาก ASP บ้าง? • นอกจากนี้ ASP.NET ยังมีการพัฒนามาตรฐานพิเศษขึ้นมาใช้เฉพาะโปรแกรมฐานข้อมูล MS SQL Server ของไมโครซอฟต์ โดยมีจุดประสงค์เพื่อให้การเชื่อมต่อฐานข้อมูลและการจัดการกับฐานข้อมูล ทำได้เร็วขึ้น และเร็วกว่าโปรแกรมฐานข้อมูลอื่นๆ ทุกชนิด
ลงมือติดตั้งโปรแกรมพร้อมใช้งาน ASP.NET • ASP.NET จะทำงานในเครื่องที่มีระบบปฏิบัติการ Windows 2000 หรือ XP ขึ้นไปเท่านั้น • ต่อไป เราจำเป็นที่จะต้องติดตั้ง - โปรแกรม .NET Framework SDK ขนาด 128 MB - หรือโปรแกรม ASP.NET Premium Edition ขนาด 18.3 MB (เลือกใช้เฉพาะโปรแกรมใดโปรแกรมหนึ่ง)
ลงมือติดตั้งโปรแกรมพร้อมใช้งาน ASP.NET • หลังจากดาวน์โหลดไฟล์มาได้เรียบร้อย การติดตั้งก็ง่ายใช้วิธีการคลิกแล้วรอ โปรแกรมก็จะจัดการคัดลอกไฟล์และติดตั้งตัวเองลงเครื่องคอมพิวเตอร์ของเราอย่างอัตโนมัติ
ลงมือติดตั้งโปรแกรมพร้อมใช้งาน ASP.NET • คุณสมบัติของฮาร์ดแวร์ที่จะใช้กับ ASP.NET
ทดสอบ ASP.NET ก่อนทำงานจริง • ไฟล์ของ ASP.NET จะเปลี่ยนนามสกุลไฟล์ใหม่จากเดิมคือ .asp ไปเป็น .aspx ส่วนวิธีการทดสอบการทำงานของสคริปต์จะยังคงยึดหลักการเดิม เหมือนกับการทดสอบสคริปต์ asp ทั่วไป คือ ให้คัดลอกไฟล์ไปเก็บเอาไว้ในไดเรกทอรี c:\inetpub\wwwroot ซึ่งเป็นไดเรกทอรีหลักของเว็บเซิร์ฟเวอร์ • หลังจากนั้น ให้เปิดโปรแกรมเว็บเบราเซอร์ขึ้นมา แล้วกรอก URL เป็น http://localhost หรือ http://127.0.0.1 ก็ได้ ตามด้วยชื่อไฟล์ .aspx เพื่อเรียกให้ เว็บเซิร์ฟเวอร์ทำงานและแปลภาษา ASP.NET ภายในไฟล์ .aspx นั้น
VB.NET หรือ C# ภาษาไหนได้เปรียบกว่า • กำหนดภาษาที่ใช้ให้ชัดเจนตั้งแต่หัวเอกสาร • การเขียนหมายเหตุ • VC กับ C# ประกาศตัวแปรต่างกันตรงไหน • การสร้างตัวแปรแบบอ็อบเจ็กต์เพื่อถ่ายทอดคุณสมบัติ • การใช้ตัวแปรแบบอาร์เรย์เก็บข้อมูลเป็นชุดๆ • คำสั่งประเภทเงื่อนไข และการทำงานวนรอบ • การสั่งการอ็อบเจ็กต์ของ ASP.NET ด้วย VB และ C#
กำหนดภาษาที่ใช้ให้ชัดเจนตั้งแต่หัวเอกสารกำหนดภาษาที่ใช้ให้ชัดเจนตั้งแต่หัวเอกสาร <% @ page language = “C#” %> <% @ page language = “VB” %> <% @ page language = “JScript” %>
กำหนดภาษาที่ใช้ให้ชัดเจนตั้งแต่หัวเอกสาร (ต่อ) จุดเด่นมากๆ อีกจุดหนึ่งของ ASP.NET คือสามารถเขียนโปรแกรมได้ด้วยภาษาที่ถนัดมากที่สุด และประกาศใช้งานภาษาได้หลายครั้งหลายภาษาในโปรแกรมเดียวกัน ในกรณีที่ลืมแทรกคำสั่งประกาศชื่อภาษาที่จะใช้ ลงไปในเว็บเพจ ค่าเริ่มต้น (default) ของคอมไพเลอร์ได้แก่ภาษา VB
กำหนดภาษาที่ใช้ให้ชัดเจนตั้งแต่หัวเอกสาร (ต่อ) ตัวอย่างการใช้งานมากกว่า 1 ภาษาในเว็บเพจเดียวกัน<Script language = “C#” runat = “server”> // เขียนโปรแกรมด้วย C# </Script> … <Script language = “VB” runat = “server”> ‘ เขียนโปรแกรมด้วย VB </Script>
การเขียนหมายเหตุ - ใช้เครื่องหมาย ‘ (single quote) แทรกอยู่หน้าบรรทัดที่เป็นหมายเหตุ - ใช้เครื่องหมาย // (slash 2 ตัวติดกัน) แทรกอยู่หน้าบรรทัดที่เป็นหมายเหตุ - ใช้เครื่องหมาย /* เป็นการเปิดพื้นที่หมายเหตุ แล้วก็ใช้เครื่องหมาย */ เป็นการปิดพื้นที่หมายเหตุ ในกรณีต้องการเขียนหมายเหตุต่อๆ กันหลายบรรทัด
Dim ชื่อตัวแปร As ชนิดของข้อมูล ชนิดของข้อมูล ชื่อตัวแปร; VB กับ C# ประกาศตัวแปรต่างกันตรงไหน
Dim ชื่อตัวแปร As new อ็อบเจ็กต์ต้นแบบ อ็อบเจ็กต์ต้นแบบ ชื่อตัวแปร = new อ็อบเจ็กต์ต้นแบบ; การสร้างตัวแปรแบบอ็อบเจ็กต์เพื่อถ่ายทอดคุณสมบัติ • วิธีการประกาศตัวแปรให้มีการถ่ายทอดคุณสมบัติ
ชนิดของข้อมูล[ ] ชื่อตัวแปร = new ชนิดของข้อมูล[ขนาดของอาร์เรย์]; Dimชื่อตัวแปร(ขนาดของอาร์เรย์) Asชนิดของข้อมูล การใช้ตัวแปรแบบอาร์เรย์เก็บข้อมูลเป็นชุดๆ
คำสั่งประเภทเงื่อนไข และการทำงานวนรอบ • If • Case • For • While
คำสั่ง If If (เงื่อนไข) ผลลัพธ์ที่เกิดขึ้นเมื่อ “เงื่อนไข” เป็น “จริง” Else ผลลัพธ์ที่เกิดขึ้นเมื่อ “เงื่อนไข” เป็น “เท็จ” End If if (เงื่อนไข) { ผลลัพธ์ที่เกิดขึ้นเมื่อ “เงื่อนไข” เป็น “จริง” }else { ผลลัพธ์ที่เกิดขึ้นเมื่อ “เงื่อนไข” เป็น “เท็จ” }
คำสั่ง Case Select (ตัวแปร) Case “ค่าที่ 1”: ผลลัพธ์ที่เกิดขึ้นเมื่อ “ตัวแปร” เท่ากับ “ค่าที่ 1” … Case “ค่าที่ n”: ผลลัพธ์ที่เกิดขึ้นเมื่อ “ตัวแปร” เท่ากับ “ค่าที่ n” End Select switch (ตัวแปร) { case “ค่าที่ 1”: ผลลัพธ์ที่เกิดขึ้นเมื่อ “ตัวแปร” เท่ากับ “ค่าที่ 1” break; … case “ค่าที่ n”: ผลลัพธ์ที่เกิดขึ้นเมื่อ “ตัวแปร” เท่ากับ “ค่าที่ n” break; }
คำสั่ง For Dim ตัวแปรAs Integer For ตัวแปร = ค่าเริ่มต้นTo ค่าสิ้นสุด การทำงานในแต่ละรอบ Next For (int ตัวแปร = ค่าเริ่มต้น; ตัวแปร < ค่าสูงสุด; วิธีการเพิ่มค่า/ลดค่า) { การทำงานในแต่ละรอบ }
คำสั่ง While Do While (เงื่อนไข) วนรอบทำงานเรื่อยๆ ตราบใดที่ “เงื่อนไข” ยังเป็น “จริง” Loop While (เงื่อนไข) { วนรอบทำงานเรื่อยๆ ตราบใดที่ “เงื่อนไข” ยังเป็น “จริง” }
การสั่งการอ็อบเจ็กต์ของ ASP.NET ด้วย VB และ C# อ็อบเจ็กต์ Application อ็อบเจ็กต์ ASPError อ็อบเจ็กต์ ObjectContext อ็อบเจ็กต์ Request อ็อบเจ็กต์ Response อ็อบเจ็กต์ Server อ็อบเจ็กต์ Session
การใช้งาน ASP ร่วมกับ VBScript If request.Form("data") <> "" Then ‘ ตรวจสอบค่าจากฟอร์มชื่อ data Response.Write("ได้รับข้อมูลเรียบร้อยแล้ว") ‘ แสดงข้อความที่เว็บเพจ End If สคริปต์ 3 บรรทัดนี้อาศัย If เป็นคำสั่งของ VBscript ร่วมกับอ็อบเจ็ก ASP 2 ตัวคือ Request กับ Response
การใช้งาน ASP.NET ร่วมกับ VB และ C# If request.Form("data") <> "" Then 'ตรวจสอบค่าจากฟอร์มชื่อ data Response.Write("ได้รับข้อมูลเรียบร้อยแล้ว") 'แสดงข้อความที่เว็บเพจ End If If (request.Form("data") ! ""){ // ตรวจสอบค่าจากฟอร์มชื่อ data Response.Write("ได้รับข้อมูลเรียบร้อยแล้ว"); // แสดงข้อความที่เว็บเพจ }
สรุปหลักการใช้งานอ็อบเจ็กของ ASP.NET กับ VB หรือ C# 1. หลักการใช้งานเหมือนกับการใช้ เหมือนกับการใช้ Asp และ VBscript เพียงแต่ต้องแยกให้ออกว่า ส่วนไหนเป็นอ็อบเจ็กต์ของ ASP ส่วนไหนเป็นคำสั่งของ VBscript 2. เมื่อแยกออกได้แล้วก็ให้แทน VBscript ด้วยภาษา VB หรือ C# ตามความต้องการโดยต้องระวังในการปรับเปลี่ยนเป็น C# ให้ดี ต้องคอยตรวจสอบไวยกรณ์และเครื่องหมาย ; ปิดท้ายคำสั่งเพราะการเปลี่ยน VBscript เป็น C# มีจุดที่ต้องแก้ไขหลายจุด ไม่เหมือนกับการเปลี่ยน VBscript เป็น VB
จุดประสงค์ของคอนโทรล • คอนโทรลช่วยประหยัดโค้ด ลดการเขียนสคริปต์ฟุ่มเฟือย • การสร้างความสัมพันธ์ระหว่างคอนโทรลกลับภาษาหลัก ( VB หรือ C# ) ทำได้ง่าย
หมวดหมู่ของคอนโทรล ASP.NET จัดแบ่งคอนโทรลตามประเภทการใช้งาน ออกเป็น 4 หมวดหมู่ใหญ่ๆ ด้วยกัน คือ • Intrinsic Controls • List Controls • Rich Controls • Validation Controls
หมวด Intrinsic Controls • เป็นคอนโทรลที่ให้ผลลัพธ์เป็นวัตถุ HTML ทั้งหมด เช่น คอนโทรล Label, Button, TextBox และอื่นๆ หมวดนี้เป็นคอนโทรลสำคัญที่จะใช้งานบ่อยที่สุด
หมวด List Controls เป็นคอนโทรลที่ออกแบบขึ้นเพื่อใช้งานกับการแสดงผลข้อมูลโดยเฉพาะ ซึ่ง ASP ดั้งเดิมที่ต้องเขียนโปรแกรมวนรอบดึงข้อมูลออกจากฐานข้อมูลมาแสดง มันไม่ได้ยุ่งยากอะไรมากมาย เพราะนักพัฒนาปฏิบัติด้วยความเคยชินกันอยู่แล้ว
List Controls ประกอบไปด้วย 3 คอนโทรลหลักที่ใช้งานกันบ่อย คือ 1. Repeater 2. DataList 3. DataGrid อย่างไรก็ตาม List Controls ยังมีคอนโทรลเล็กๆ อีก 2 ตัวที่มีบทบาทน้อยมาก คือ RadioButtonList สำหรับแสดงรายการที่เป็น radio button และ CheckBoxList สำหรับรายการที่เป็น check box
หมวด Rich Controls เป็นคอนโทรลพิเศษที่ให้ผลลัพธ์ในลักษณะสำเร็จรูปมากกว่าคอนโทรลประเภทอื่นๆ คล้ายๆ กับว่าเป็นชุดเว็บแอปพลิเคชันที่ใช้กันบ่อยๆ ผู้พัฒนาเว็บจะได้เรียกใช้งานง่ายๆ ตัวอย่างคอนโทรลในหมวดนี้เราก็ได้เห็นตอนต้นแล้วคือ คอนโทรล Calendar
หมวด Validation Controls คอนโทรลทั้งหมดใน Validation Controls มีจำนวน 6 ตัวด้วยกัน คือ 1. RequiredFieldValidator 2. CompareValidator 3. RangValidator 4. RegularExpresionValidator 5. CustomValidator 6. ValidationSummarry
การเชื่อมต่อฐานข้อมูลการเชื่อมต่อฐานข้อมูล การเชื่อมต่อฐานข้อมูลสำหรับภาษานี้ เป็นการเชื่อมต่อฐานข้อมูลแนวใหม่ ซึ่งปัจจัยสำคัญที่ทำให้เกิดการเชื่อมต่อฐานข้อมูลแนวใหม่ ได้แก่ การพัฒนาของ ADO ให้กลายเป็นADO.NET และการเปลี่ยนระบบเรียกใช้งานการอ็อบเจ็กต์เป็นระบบการเปิดหรือปิดคลาสพื้นฐาน หรือที่เรียกว่า เนมสเปซ (namespace)
การเชื่อมต่อฐานข้อมูล (ต่อ) ADO.NET มีวิธีการเรียกใช้งานอ็อบเจ็กต์และคลาสต่างๆจะเรียกผ่าน “เนมสเปซ” (namespace) ซึ่งเป็นคลาสพื้นฐานของ .NET Framework ด้วยคำสั่งดังนี้ <%@ Import Namespace = “System.Data” %> ซึ่งอ็อบเจ็กต์หลักของ ASP.NET จะใช้ชื่อว่า “System” เราจะต้องเชื่อมต่อฐานข้อมูลผ่าน OLEDB Provider เท่านั้น
เนมสเปซสำหรับ MS SQL Server และ XML โดยเฉพาะ - ถ้าต้องการเชื่อมต่อฐานข้อมูล MS SQL Server ให้ใช้คำสั่ง Import Namespace ดังนี้ <%@ Import Namespace = “System.Data.SQLClient” %> - สำหรับ XML จะมีเนมสเปซเฉพาะ ดังนี้ <%@ Import Namespace = “System.XML” %>
การแสดงข้อมูลจากไฟล์ฐานข้อมูล Microsoft Access การติดต่อฐานข้อมูลทั่วไป ที่ผ่าน OLEDB Provider จะใช้ เนมสเปซ 2 ตัว ด้วยกันคือ <%@ Import Namespace = “System.Data” %> <%@ Import Namespace = “System.Data.OleDb” %> System.Data.OleDb ใช้สำหรับเชื่อมต่อฐานข้อมูลผ่าน OleDb Provider เมื่อเราอิมพอร์ตเนมสเปซ ชื่อ System.Data.OleDb แล้ว เราจะสามารถใช้งานอ็อบเจ็กต์ เช่น OleDbConnection และ OleDbAdapter ได้ ส่วน เนมสเปซ ชื่อ System.Data ก็จะเกี่ยวข้องกับการแสดงผลข้อมูลและอ็อบเจ็กต์ Dataset
การแสดงข้อมูลจากไฟล์ฐานข้อมูล Microsoft Access การประกาศตัวแปรอ็อบเจ็กต์ ถ้าเป็นการติดต่อฐานข้อมูลธรรมดาทั่วไปผ่าน OleDb Provider จะใช้ 3 อ็อบเจ็ค คือ 1. OleDbConnection 2. OleDbDataAdapter 3. DataSet
ตัวอย่าง แบบ VB ‘ เชื่อมต่อฐานข้อมูล Dim myconn As new OleDbConnection(“กำหนดโพรไวเดอร์”) ‘เรียกข้อมูลจากฐานข้อมุล Dim myda As new OleDbDataAdapter(“ระบุประโยคคำสั่ง SQL”,myconn) ‘เก็บข้อมูลใส่ DataSet โดย “ชื่ออ้างอิง” จะใช้เป็นชื่อที่เรียกกลุ่มข้อมูลเหล่านี้ใน DataSetต่อไป Dim ds As new DataSet() myda.Fill(ds,”ชื่ออ้างอิง”)
ตัวอย่างแบบ C# OleDbConnection myconn = new OleDbConnection(“กำหนดโพรไวเดอร์และไฟล์”); OleDbDataAdapter myda = newOleDbDataAdapter(“ระบุประโยคคำสั่ง SQL”,myconn); DataSet ds = new Dataset(); Myda.Fill(ds, “ชื่ออ้างอิง”);
การนำข้อมูลที่อยู่ใน DataSet ไปแสดงผล โดยใช้ Datagrid ตัวอย่าง แบบ VB ‘ให้ mydatagrid เป็นชื่อของคอนโทรล DataGrid ที่จะนำข้อมูลไปแสดง mydatagrid.DataSource = ds.Tables(“ชื่ออ้างอิง”) mydatagrid.DataBind() …. <asp:DataGrid id = “mydatagrid” runat = “server” />
การนำข้อมูลที่อยู่ใน DataSet ไปแสดงผล โดยใช้ Datagrid ตัวอย่าง แบบ C# // ให้ mydatagrid เป็นชื่อของคอนโทรล DataGrid ที่จะนำข้อมูลไปแสดง mydatagrid.DataSource = ds.Tables(“ชื่ออ้างอิง”); mydatagrid.DataBind(); …. <asp:DataGrid id = “mydatagrid” runat = “server” />