Upload
warawut
View
325
Download
2
Tags:
Embed Size (px)
Citation preview
บทท�� บทท�� 3 ADO.NET 3 ADO.NET ก�บก�บฐานข�อม�ล ฐานข�อม�ล Access Access
2003/20072003/2007
Suan Dusit Rajabhat University, Phitsanulok CampusSuan Dusit Rajabhat University, Phitsanulok CampusMr.Warawut KhangkhanMr.Warawut Khangkhan
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 2
เน��อหาเน��อหา
● ท ศทางการพ�ฒนาแอพพล เคช�นด�านฐานข�อม�ลของ VS2008
● การพ�ฒนาระบบงานด�านฐานข�อม�ลโดยอาศ�ยกล./ม ADO.NET
● การเช0�อมต/อก�บฐานข�อม�ล Access 2003/2007● การผ�กต ดข�อม�ล (Binding Data)● การใช�งานออบเจ5กต6 DataReader
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 3
เน��อหาเน��อหา
● การใช�งานเมธอด Execute ของออบเจ5กต6 Command
● การตรวจสอบโครงสร�างของฐานข�อม�ล Access 2003/2007
● การใช�งานออบเจ5กต6 Query ของฐานข�อม�ล Access 2003/2007
● การจ�ดการฐานข�อม�ล Access โดยการท:า Transaction
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 4
ท�ศทางการพ�ฒนาแอพพล�เคช�นท�ศทางการพ�ฒนาแอพพล�เคช�นด�านฐานข�อม�ลของ ด�านฐานข�อม�ลของ VS2008VS2008
.NET 2.0
Windows Form Application
ADO.NET 2.0●SQL
.NET 3.0/3.5
LINQ●LINQ to Object●LINQ to SQL●LINQ to XML
WPF Application
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 5
การพ�ฒนาระบบงานด�านฐานการพ�ฒนาระบบงานด�านฐานข�อม�ล โดยอาศ�ยกล"#ม ข�อม�ล โดยอาศ�ยกล"#ม ADO.NETADO.NET● เร�ยกใช�กล./มออบเจ5กต6 ADO.NET ในขณะ
ออกแบบ (Design Time)● การเร�ยกใช�งานกล./มออบเจ5กต6 ADO.NET โดย
การเข�ยนโค�ดโดยตรง (Run Time)
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 6
กล"#มออบเจ%กต' กล"#มออบเจ%กต' ADO.NETADO.NET
กล"#มกล"#มออบเจ%กต'ออบเจ%กต'ย#อยท��ย#อยท��ท(างานท(างานร#วมก�บร#วมก�บกล"#มกล"#มออบเจ%กต'ออบเจ%กต'หล�กของหล�กของ ADO.NETADO.NET
กล"#มกล"#มออบเจ%กต'ท��ใช� ออบเจ%กต'ท��ใช� OLEDB Data OLEDB Data
ProviderProvider
Namespace System.Data.OleDb
กล"#มกล"#มออบเจ%กต'ท��ใช� ออบเจ%กต'ท��ใช� SQL Server SQL Server
Data Data ProviderProvider
Namespace System.Data.SqlClient
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 10
หน�าท��ของออบเจ%กต'หล�กหน�าท��ของออบเจ%กต'หล�กแต#ละชน�ดแต#ละชน�ด
● ออบเจ%กต' Connectionท:าหน�าท��สร�างการเช0�อมต/อเข�าก�บฐานข�อม�ล โดย OleDbConnection เช0�อมต/อก�บฐานข�อม�ลชน ด Access ส/วน SqlConnection ท:าหน�าท��เช0�อมต/อก�บฐานข�อม�ลชน ด SQL Server
● ออบเจ%กต' DataAdapterท:าหน�าท��เก5บช.ดค:าส��ง SQL เพ0�อค วร�ข�อม�ลออกมาจากฐานข�อม�ล ผลล�พธ6ท��ได�ค0อ ออบเจ5กต6 DataSet
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 11
หน�าท��ของออบเจ%กต'หล�กหน�าท��ของออบเจ%กต'หล�กแต#ละชน�ดแต#ละชน�ด
● ออบเจ%กต' DataSetท:าหน�าท��เก5บผลล�พธ6จากการท:าค วร�ข�อม�ลจากฐานข�อม�ลท��ได�จาก ออบเจ5กต6 DataAdapter เป?นออบเจ5กต6หล�กท��ม�บทบาทและม�ความส:าค�ญมากท��ส.ด
● ออบเจ%กต' Commandท:าหน�าท��ร�นช.ดค:าส��ง SQL ผลล�พธ6ท��ได�ค0อ ออบเจ5กต6 DataReader
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 12
หน�าท��ของออบเจ%กต'หล�กหน�าท��ของออบเจ%กต'หล�กแต#ละชน�ดแต#ละชน�ด
● ออบเจ%กต' DataReaderท:าหน�าท��เก5บผลล�พธ6ของการท:าค วร�ข�อม�ลจากฐานข�อม�ล เช/นเด�ยวก�บออบเจ5กต6 DataSet แต/จะได�มาจาก ออบเจ5กต6 Command
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 13
การเช0�อมต/อก�บฐานข�อม�ล การเช0�อมต/อก�บฐานข�อม�ล Access Access 2003/20072003/2007
● ความแตกต/างก�นระหว/าง Access 2003/2007Access 2003 นามสก.ล .mdbAccess 2007 นามสก.ล .accdb
● การเช0�อมต/อก�บฐานข�อม�ลAccess 2003Provider=Microsoft.JET.OLEDB.4.0;data source=c:\\abc.mdbAccess 2007Provider=Microsoft.ACE.OLEDB.12.0;data source=c:\\abc.accdb;Persist Security Info=False
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 14
การผ�กต ดข�อม�ล การผ�กต ดข�อม�ล (Binding Data)(Binding Data)● การผ�กต�ดข�อม�ล (Binding Data) ถ0อเป?นการ
ท:างานข�Bนพ0Bนฐานในการแสดงข�อม�ลออกมาจากฐานข�อม�ล
การผ�กต ดข�อม�ล การผ�กต ดข�อม�ล (Binding Data)(Binding Data)
สถาปCตยกรรม ADO.NET ม�อย�/ 2 แบบ ค0อ● Simple Binding Data เป?นการผ�กต ดข�อม�ล
แบบปกต ค0อ เป?นการแสดงข�อม�ลด�วยคอนโทรล DataGridView, TextBox, Label เป?นต�น เป?นว ธ�การแสดงข�อม�ลออกมาจากตารางเด�ยว (ไม/ม�การเช0�อมโยงก�บตารางอ0�นๆ)
● Complex Binding Data หร0ออาจจะเร�ยกว/า การท:า Lookup Table ก5ได� เป?นการแสดงข�อม�ลท��เก ดจากการเช0�อมโยงความส�มพ�นธ6ระหว/างตาราง 2 ตารางเข�าด�วยก�น
การใช�งานออบเจ%กต' การใช�งานออบเจ%กต' DataReaderDataReader
● ท:าหน�าท��เก5บผลค วร�ข�อม�ลออกมาจากฐานข�อม�ล โดยท��จะอ/านคร�Bง 1 เร5คคอร6ด (record)
● สถานะเคล0�อนท��ไปข�าง (Forward-Only) เพ�ยงอย/างเด�ยว
● เก ดจากการค วร�ช.ดค:า ส��ง SQL ของออบเจ5กต6 Command
● เหมาะก�บการค วร�ข�อม�ลขนาดเล5ก เช/น การแสดงข�อม�ลหร0อการอ/านค/าขEBนมา เพ0�อใช�เป?นเง0�อนไขในการท:างาน
● สามารถร�บข�อม�ลจากออบเจ5กต6 DataSet
การใช�งานเมธอด การใช�งานเมธอด Execute Execute ของของออบเจ5กต6 ออบเจ5กต6 CommandCommand
● เมธอด ExecuteReader( )ท:าหน�าท��ร�นช.ดค:าส��ง SQL ประเภทเร�ยกด�หร0ออ/านข�อม�ล ผลการร�นได�ออบเจ5กต6 DataReader
● เมธอด ExecuteScalar( )ท:าหน�าท��เช/นเด�ยวก�บเมธอด ExecuteReader( ) แต/ม�ข�อแตกต/างก5ค0อ เมธอดน�Bส/งค/ากล�บมาเพ�ยงค/าเด�ยวเท/าน�Bน
● เมธอด ExecuteQuery( )ท:าหน�าท��ร�นช.ดค:าส��ง SQL ประเภทเพ �ม แก�ไข หร0อลบข�อม�ล
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 18
ข�อแตกต#างระหว#างออบเจ%กต'ข�อแตกต#างระหว#างออบเจ%กต'DataReader DataReader ก�บออบเจ%กต' ก�บออบเจ%กต'
DataSetDataSetออบเจ%กต' DataReader● ท:าหน�าท��อ/านข�อม�ลออกมาจากฐานข�อม�ล
โดยท��จะอ/านคร�Bงละ 1 เร5คคอร6ดออกมา ม�สถานะเคล0�อนท��ไปข�างหน�า (Forward-Only) เพ�ยงอย/างเด�ยว
● ปกต แล�วเก ดจากการค วร�ช.ดค:าส��ง SQL ของออบเจ5กต6 Command ส/วนออบเจ5กต6 DataSet เก ดจากการค วร�ช.ดค:าส��ง SQL ของออบเจ5กต6 DataAdapter
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 19
ข�อแตกต#างระหว#างออบเจ%กต'ข�อแตกต#างระหว#างออบเจ%กต'DataReader DataReader ก�บออบเจ%กต' ก�บออบเจ%กต'
DataSetDataSetออบเจ%กต' DataReader (ต#อ)● เก ดมาจากสถาปCตยกรรม Connected หมายถEง
ม�การเช0�อมต/อก�บแหล/งข�อม�ลตลอดเวลา ส/งผลให�เม0�อใช�งานออบเจ5กต6 DataReader แล�ว ต�องควบค.มการเปGด-ปGดของออบเจ5กต6 DataReader เองท�Bงหมด เพราะว/าไม/สามารถเปGดออบเจ5กต6 DataReader เก น 1 คร�Bงในเวลาเด�ยวก�น
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 20
ข�อแตกต#างระหว#างออบเจ%กต'ข�อแตกต#างระหว#างออบเจ%กต'DataReader DataReader ก�บออบเจ%กต' ก�บออบเจ%กต'
DataSetDataSetออบเจ%กต' DataSet● อ/านข�อม�ลท�Bงหมดท��ค วร�ด�วยช.ดค:าส��ง SQL
ออกมาแล�วเก5บไว�ในหน/วยความจ:า จากน�Bนจะน:าไปใช�ในร�ปแบบใด ก5แล�วแต/ความต�องการ
● สามารถจ�ดการก�บข�อม�ลท��เก5บอย�/ในออบเจ5กต6 DataSet ได�มากกว/าออบเจ5กต6 DataReader
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 21
ข�อแตกต#างระหว#างออบเจ%กต'ข�อแตกต#างระหว#างออบเจ%กต'DataReader DataReader ก�บออบเจ%กต' ก�บออบเจ%กต'
DataSetDataSetออบเจ%กต' DataSet (ต#อ)● เก ดมาจากสถาปCตยกรรม Disconnected ซE�ง
หมายถEง เม0�อค.ณค วร�ข�อม�ลมาเก5บไว�ท��ออบเจ5กต6 DataSet แล�ว ก5จะม�การต�ดการเช0�อมต/อก�บแหล/งข�อม�ลโดยอ�ตโนม�ต ท�นท�
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 22
การตรวจสอบโครงสร�างของฐานการตรวจสอบโครงสร�างของฐานข�อม�ล ข�อม�ล Access 2003/2007Access 2003/2007
● ปกต แล�วเราใช�กล./มออบเจ5กต6 ADO.NET ค วร�ข�อม�ลออกมาจากฐานข�อม�ล แต/ก5ม�การค วร�อ�กล�กษณะหนE�งท��ไม/ต�องการข�อม�ลแต/อย/างใด แต/ต�องการตรวจสอบโครงสร�างของฐานข�อม�ล
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 23
การใช�งานออบเจ5กต6 การใช�งานออบเจ5กต6 Query Query ของของฐานข�อม�ล ฐานข�อม�ล Access 2003/2007Access 2003/2007
สามารถใช�งานออบเจ5กต6 Query ได� 2 ล�กษณะ ● การใช�งานออบเจ%กต' Query แบบไม#ม�การ
ส#งค#าต�วแปร หมายถEง ช.ดค:าส��ง SQL ท��เก5บอย�/ม�ความสมบ�รณ6ในต�วม�นเอง โดยสามารถส/งผลการท:างานของช.ดค:าส��ง SQL ด�งกล/าวออกมาได�เลย
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 24
การใช�งานออบเจ5กต6 การใช�งานออบเจ5กต6 Query Query ของของฐานข�อม�ล ฐานข�อม�ล Access 2003/2007Access 2003/2007
สามารถใช�งานออบเจ5กต6 Query ได� 2 ล�กษณะ (ต/อ) ● การใช�งานออบเจ%กต' Query แบบม�การส#ง
ค#าต�วแปร หมายถEง เม0�อต�องการผลการท:างานของช.ด SQL ท��เก5บอย�/ในออบเจ5กต6 Query ประเภทน�B ต�องตรวจสอบก/อนว/าช.ดค:าส��ง SQL ด�งกล/าวต�องการต�วแปรก��ต�ว และต�วแปรแต/ละต�วเป?นข�อม�ลชน ดใด
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 25
การจ�ดการฐานข�อม�ล การจ�ดการฐานข�อม�ล Access Access โดยโดยการท:า การท:า TransactionTransaction
● การท:า Transaction เป?นการเข�ยนโค�ด เพ0�อร�บประก�นว/าเม0�อม�การประมวลผลข�อม�ลแล�ว ไม/ว/าจะเป?นการเพ �มหร0อแก�ไขข�อม�ล จะถ�กน:าไปกระท:าก�บข�อม�ลท��อย�/ในตารางจร งครบท.กตารางท��อย�/ใน Transaction เด�ยวก�น ซE�งจะม�อย�/ 2 สถานะเท/าน�Bน ค0อ
– สมบ�รณ' 100% เร�ยกสถานะน�Bว/า Commit Transaction
– ล�มเหลว 0% เร�ยกสถานะน�Bว/า Rollback Transaction
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 26
หล�กการท:างานของ หล�กการท:างานของ TransactionTransaction● ค0อ เป?นการแก�ไขข�อม�ลท��อย�/ใน Cache ก/อน
เม0�อม�การ Commit Transaction จEงเข�าส�/ข�Bนตอนการน:าข�อม�ล ซE�งถ�กแก�ไขแล�วไปกระท:าก�บข�อม�ลท��อย�/ในตารางจร ง แต/ในกรณ�ท��เก ดการท:า Rollback Transaction ก5จะไม/กระทบก�บข�อม�ลท��อย�/ในตารางจร งแต/อย/างใด เพราะเป?นการแก�ไขข�อม�ลท��อย�/ใน Cache น��นเอง
● สามารถท:า Transaction ได�ท�Bงฐานข�อม�ล Access และ SQL Server
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 27
เมธอดท��เก��ยวก�บ เมธอดท��เก��ยวก�บ TransactionTransaction● เมธอด BeginTrans( ) ของออบเจ5กต6
SqlConnection เพ0�อเร �มต�นท:า Transaction● เมธอด Commit( ) ของออบเจ5กต6
SqlTransaction เพ0�อ Commit Transaction● เมธอด Rollback( ) เพ0�อท:า Rollback
Transaction
K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 28
Contact usContact usMr.Warawut KhangkhanMr.Warawut Khangkhan
Social Media:http://www.facebook.com/awarawut
http://twitter.com/awarawutWeb Site:
http://awarawut.blogspot.comE-Mail:
[email protected][email protected]
Mobile:083-0698-410