E N D
ADO.NET ADO.NET เป็นเทคโนโลยีที่พัฒนาขึ้นมาใช้ใน .NET เพื่อทำหน้าที่เช่นเดียวกับ ADO ซึ่งใช้กับ ASP นั่นก็คือ ใช้ติดต่อกับแหล่งข้อมูลโดยเฉพาะฐานข้อมูลซึ่งมีงานมากจนกล่าวได้ว่าทุก Application ที่ต้องใช้ข้อมูลต่างก็เก็บข้อมูลไว้ในฐานข้อมูลด้วยกันทั้งสิ้น ถึงแม้ว่าขั้นตอนในการดึงข้อมูลจากแหล่งข้อมูลมาใช้จะคล้ายกันก็ตาม แต่ ADO.NET ก็แตกต่างจาก ADO เป็นอย่างมากทั้งในแง่ของโครงสร้าง Object และรูปแบบการทำงาน โดยสิ่งที่ทำให้ ADO.NET แตกต่างจาก ADO ที่เด่น ๆ ก็มีดังนี้
1.เพิ่มประสิทธิภาพในการติดต่อกับ SQL Serverโดยเฉพาะ ใน ADO นั้นการติดต่อกับฐานข้อมูลไม่ว่าจะเป็น MS Access หรือ SQL Server ต่างก็ใช้วิธีเดียวกันโดยแตกต่างกันเล็กน้อย ที่การกำหนดชื่อ Providerซึ่งเป็นตัวกลางที่ทำหน้าที่ติดต่อกับฐานข้อมูลให้เรา แต่สำหรับ ADO.NET Microsoft ได้พัฒนา Namespace ขึ้นมาเพื่อติดต่อกับ SQL Sever โดยเฉพาะ ซึ่งclass ต่าง ๆ ที่อยู่ใน Namespace ดังกล่าวจะติดต่อกับ SQL Server ผ่าน SQL Server API ของ SQL Server เพื่อให้ได้รับประสิทธิภาพที่ดีที่สุด
2.ผ่าน Firewallได้อย่างไม่มีปัญหา เนื่องจากข้อมูลใน ADO.NET มีรูปแบบเป็น XML ซึ่งจะถูกส่งผ่าน Internet ด้วยวิธีเดียวกับการส่ง Web page ในInternet ดังนั้นข้อมูลของเราจึงสามารถผ่าน Firewall ได้อย่างสบาย ๆ เพราะระบบที่ติดตั้ง Firewall เพื่อป้องกันผู้บุกรุกจะอนุญาตให้ข้อมูลแบบเดียวกับ Web page ผ่านเข้าออกได้อยู่แล้ว
3.สนับสนุน XML ADO.NET ถูกพัฒนาขึ้นมาโดยมี XMLเป็นรูปแบบที่นำขึ้นมาจากแหล่งข้อมูล เราจึงสามารถนำข้อมูลดังกล่าวไปใช้แลกเปลี่ยนกับคอมพิวเตอร์เครื่องอื่น ๆ ได้แม้จะใช้ระบบ ปฏิบัติการคนละตัวหรือแม้กระทั่งคนละPlatform โดยเราสามารถสร้างเอกสาร XML ได้จากข้อมูลที่อยู่นั่นเอง ในทางตรงกันข้ามเราก็สามารถนำข้อมูลจากเอกสาร XML มาเก็บลงฐานข้อมูลได้เช่นกัน ถึงแม้ว่า ADO.NET จะถูกพัฒนาขึ้นมาใหม่ให้ทำงานกับข้อมูลในรูปแบบ XML แต่เราก็ยังสามารถทำงานกับ Componentเก่า ๆ ที่ส่งข้อมูลเป็น ADO Recordset ได้เหมือนเดิม และยังสามารถสร้างเอกสาร XML จากข้อมูลเหล่านั้นได้อีกด้วย
การพัฒนาระบบงานด้านฐานข้อมูลโดยอาศัยออบเจ็กต์ ADO.NET มี 2 ทางเลือก ได้แก่ • วิธีที่ 1 การเรียกใช้งานกลุ่มออบเจ็กต์ ADO.NET ในขณะออกแบบ(Design Time) • วิธีที่ 2 การเรียกใช้งานกลุ่มออบเจ็กต์ ADO.NET โดยการเขียนโดยตรง (Rum time) ADO.NET
OleDbConnection SqlConnection OleDbDataAdapter SqlDataAdapter SqlCommand OleDbCommand OleDbDataReader SqlDataReader DataSet กลุ่มออบเจ็กต์หลักของสถาปัตยกรรม ADO.NET
OLEDB Data Providerทำหน้าที่เข้าถึงข้อมูลในฐานข้อมูล ใช้งานร่วมกับฐานข้อมูล MS Access SQL Server Data Providerทำหน้าที่เข้าถึงข้อมูลในฐานข้อมูล ใช้งานร่วมกับฐานข้อมูล MS SQL Server ออบเจ็กต์ที่ใช้เก็บผลการทำงาน หน้าที่ของแต่ละออบเจ็กต์
กลุ่มออบเจ็กต์ OLEDB Data Provider อยู่ในเนมสเปซ System.Data.OleDb • กลุ่มออบเจ็กต์SQL Server Data Provider อยู่ในเนมสเปซSystem.Data.SqlClient • ออบเจ็กต์ Data Setอยู่ในเนมสเปซ System.Data Namespace ที่เรียกใช้งาน
กลุ่มออบเจ็กต์OLEDB Data Provider WinForm Apps WebForm Apps ส่วนแสดงผล User Interface -UI DataReader DataSet DataTable DataTable OleDb.NET Data Provider OleDb Command OleDb DataAdapter Database OleDbConnection
กลุ่มออบเจ็กต์ SQL Server Data Provider WinForm Apps WebForm Apps ส่วนแสดงผล User Interface -UI DataReader DataSet DataTable DataTable SQL Server.NET Data Provider Sql Command Sql DataAdapter Database SqlConnection
อยู่ในเนมสเปซ System.Data.OleDb • OleDbConnection class • OleDbCommand class • OleDbDataAdapter class • OleDbDataReader class ขั้นตอนการติดต่อฐานข้อมูลโดยใช้ออบเจ็กต์กลุ่มOLEDB
OleDbConnection class ทำหน้าที่ในการเปิดการเชื่อมต่อกับฐานข้อมูล Property ที่สำคัญ
OleDbConnection class(ต่อ) Constructor Method ที่จำเป็น
Dim conStr As String = “Provider = Microsoft.JET.OleDb.4.0; Data Source=ตำแหน่งไฟล์ฐานข้อมูล”; User =ชื่อผู้ใช้ ; Password = รหัสผ่าน” Dim connAs New OleDbConnection() With conn If .State = ConnectionState.OpenThen .close() ConnectionString = conStr .Open() End With OleDbConnection class(ต่อ)
OleDbCommandclass ทำหน้าที่กำหนดคำสั่ง SQL หรือ StoreProcedure ที่จะประมวลผลในฐานข้อมูล Property ที่สำคัญ
OleDbCommand class(ต่อ) Constructor
Dim cmd As New OleDbCommand() With cmd .Connection = conn .CommandText = “Select * From Products” .CommandTimeOut = 90 .CommandType = CommandType.Text End With OleDbCommand class(ต่อ)
OleDbDataAdapterclass ทำหน้าที่เก็บชุดคำสั่งและการเชื่อมต่อฐานข้อมูลที่จะใช้ในการกำหนดข้อมูลให้แก่ DataSet และ update Data Source Constructor
OleDbDataAdapter class(ต่อ) Property ที่จำเป็น Method ที่จำเป็น
Dim ds As New DataSet() Dim da As New OleDbDataAdapter(“Select * from Products” , conn) da.Fill(ds , “Products”) OleDbDataAdapter class(ต่อ)
OleDbDataReader class ทำหน้าที่อ่านข้อมูลแบบ Forward-only ของ แถวข้อมูลจาก Data Source (อ่านครั้ง 1 เรคคอร์ด) Constructor
OleDbDataReader class(ต่อ) Property ที่จำเป็น Method ที่จำเป็น
Dim sql As String = “Select * from Products where ProductId = 77” Dim com As New OleDbCommand() Dim dr As New OleDbDataReader() Dim dt As New DataTable() OleDbDataReader class(ต่อ)
DataSet class ทำหน้าที่เก็บชุดข้อมูลที่ได้จากออบเจ็กต์ OleDbDataAdapter Constructor
DataSet class(ต่อ) Property ที่จำเป็น Method ที่จำเป็น
ออบเจ็กต์ DataReader และ DataSet ทำหน้าที่ในการเก็บข้อมูลที่อ่านออกมาจากแหล่งข้อมูล • เช่น จากตารางข้อมูลโดยอาศัยชุดคำสั่ง SQL หรือ จากแหล่งข้อมูล XML เป็นต้น DataReadervsDataSet
ออบเจ็กต์ DataReader อ่านข้อมูลทีละ 1 เรคคอร์ดออกมา มีสถานะการเคลื่อนที่ไปข้างหน้าอย่างเดียว (Forward-only) ส่วนใหญ่เกิดจากการรันคำสั่ง SQL ของ ออบเจ็กต์ Command • ตัวอย่างเช่น คิวรีข้อมูลออกมาเป็นชุด โดยไม่ต้องการอ่านข้อมูลทั้งหมดมาเก็บไว้ที่หน่วยความจำ(RAM) แต่ต้องการอ่านข้อมูลมาใช้งานทีละ 1 เรคคอร์ด DataReadervsDataSet(ต่อ)
ออบเจ็กต์ DataSet อ่านข้อมูลทั้งหมดที่คิวรีด้วยคำสั่ง SQL มาเก็บไว้ในหน่วยความจำ จากนั้นจึงนำไปใช้ในรูปแบบต่าง ๆ ตามต้องการ • ดังนั้น จึงสามารถจัดการกับข้อมูลที่เก็บอยู่ใน DataSetได้มากกว่าใน DataReader DataReadervsDataSet(ต่อ)
ออบเจ็กต์ DataReader เกิดจากสถาปัตยกรรม Connectedหมายถึง มีการเชื่อมต่อกับฐานข้อมูลตลอดเวลา ดังนั้นเมื่อใช้งานออบเจ็กต์ DataReaderเสร็จแล้ว ต้องควบคุมการเปิด-ปิด ออบเจ็กต์ DataReaderเองทั้งหมด เพราะไม่สามารถเปิดออบเจ็กต์ DataReaderได้เกิน 1 ครั้งในเวลาเดียวกัน • ออบเจ็กต์ DataSetเกิดจากสถาปัตยกรรม Disconnectedหมายถึง เมื่อคิวรีข้อมูลมาเก็บไว้ใน DataSetแล้ว จะตัดการเชื่อมต่อกับแหล่งข้อมูลโดยทันที DataReadervsDataSet(ต่อ)
เป็นการแสดงข้อมูลจากฐานข้อมูลผ่านทางคอนโทรลต่าง ๆ มี 2 แบบ คือ • Simple Binding Dataเป็นการแสดงข้อมูลออกมาจากตารางเดียว ไม่มีการเชื่อมโยงกับตารางอื่น ๆ • Complex Binding Dataเป็นการแสดงข้อมูลที่เกิดจากเชื่อมโยงข้อมูลมาจากตารางอื่น ๆ (ลักษณะแบบ LookUp Table) การผูกติดข้อมูล (Binding Data)
การใช้งานจะสร้างออบเจ็กต์ของ BindingSource Property ที่จำเป็น การผูกติดข้อมูล (Binding Data)
การใช้งานจะสร้างออบเจ็กต์ของ BindingSource • ตัวอย่าง Dim bs As New BindingSource() Property ที่จำเป็น การผูกติดข้อมูล (Binding Data)
Method ที่จำเป็น การผูกติดข้อมูล (Binding Data)
Method ที่จำเป็น การผูกติดข้อมูล (Binding Data)
Lab1 . ให้นักศึกษาเชื่อมโยงตาราง Productsและให้เขียนโค๊ดแทรกแถวใหม่,ค้นหา,แก้ไข และ ลบ ข้อมูล