03 ado-dot-net-access

28
บทท บทท 3 ADO.NET 3 ADO.NET กบ กบ ฐานขอมล ฐานขอมล Access Access 2003/2007 2003/2007 Suan Dusit Rajabhat University, Phitsanulok Campus Suan Dusit Rajabhat University, Phitsanulok Campus Mr.Warawut Khangkhan Mr.Warawut Khangkhan

Transcript of 03 ado-dot-net-access

Page 1: 03 ado-dot-net-access

บทท�� บทท�� 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

Page 2: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 2

เน��อหาเน��อหา

● ท ศทางการพ�ฒนาแอพพล เคช�นด�านฐานข�อม�ลของ VS2008

● การพ�ฒนาระบบงานด�านฐานข�อม�ลโดยอาศ�ยกล./ม ADO.NET

● การเช0�อมต/อก�บฐานข�อม�ล Access 2003/2007● การผ�กต ดข�อม�ล (Binding Data)● การใช�งานออบเจ5กต6 DataReader

Page 3: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 3

เน��อหาเน��อหา

● การใช�งานเมธอด Execute ของออบเจ5กต6 Command

● การตรวจสอบโครงสร�างของฐานข�อม�ล Access 2003/2007

● การใช�งานออบเจ5กต6 Query ของฐานข�อม�ล Access 2003/2007

● การจ�ดการฐานข�อม�ล Access โดยการท:า Transaction

Page 4: 03 ado-dot-net-access

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

Page 5: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 5

การพ�ฒนาระบบงานด�านฐานการพ�ฒนาระบบงานด�านฐานข�อม�ล โดยอาศ�ยกล"#ม ข�อม�ล โดยอาศ�ยกล"#ม ADO.NETADO.NET● เร�ยกใช�กล./มออบเจ5กต6 ADO.NET ในขณะ

ออกแบบ (Design Time)● การเร�ยกใช�งานกล./มออบเจ5กต6 ADO.NET โดย

การเข�ยนโค�ดโดยตรง (Run Time)

Page 6: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 6

กล"#มออบเจ%กต' กล"#มออบเจ%กต' ADO.NETADO.NET

Page 7: 03 ado-dot-net-access

กล"#มกล"#มออบเจ%กต'ออบเจ%กต'ย#อยท��ย#อยท��ท(างานท(างานร#วมก�บร#วมก�บกล"#มกล"#มออบเจ%กต'ออบเจ%กต'หล�กของหล�กของ ADO.NETADO.NET

Page 8: 03 ado-dot-net-access

กล"#มกล"#มออบเจ%กต'ท��ใช� ออบเจ%กต'ท��ใช� OLEDB Data OLEDB Data

ProviderProvider

Namespace System.Data.OleDb

Page 9: 03 ado-dot-net-access

กล"#มกล"#มออบเจ%กต'ท��ใช� ออบเจ%กต'ท��ใช� SQL Server SQL Server

Data Data ProviderProvider

Namespace System.Data.SqlClient

Page 10: 03 ado-dot-net-access

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

Page 11: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 11

หน�าท��ของออบเจ%กต'หล�กหน�าท��ของออบเจ%กต'หล�กแต#ละชน�ดแต#ละชน�ด

● ออบเจ%กต' DataSetท:าหน�าท��เก5บผลล�พธ6จากการท:าค วร�ข�อม�ลจากฐานข�อม�ลท��ได�จาก ออบเจ5กต6 DataAdapter เป?นออบเจ5กต6หล�กท��ม�บทบาทและม�ความส:าค�ญมากท��ส.ด

● ออบเจ%กต' Commandท:าหน�าท��ร�นช.ดค:าส��ง SQL ผลล�พธ6ท��ได�ค0อ ออบเจ5กต6 DataReader

Page 12: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 12

หน�าท��ของออบเจ%กต'หล�กหน�าท��ของออบเจ%กต'หล�กแต#ละชน�ดแต#ละชน�ด

● ออบเจ%กต' DataReaderท:าหน�าท��เก5บผลล�พธ6ของการท:าค วร�ข�อม�ลจากฐานข�อม�ล เช/นเด�ยวก�บออบเจ5กต6 DataSet แต/จะได�มาจาก ออบเจ5กต6 Command

Page 13: 03 ado-dot-net-access

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

Page 14: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 14

การผ�กต ดข�อม�ล การผ�กต ดข�อม�ล (Binding Data)(Binding Data)● การผ�กต�ดข�อม�ล (Binding Data) ถ0อเป?นการ

ท:างานข�Bนพ0Bนฐานในการแสดงข�อม�ลออกมาจากฐานข�อม�ล

Page 15: 03 ado-dot-net-access

การผ�กต ดข�อม�ล การผ�กต ดข�อม�ล (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 ตารางเข�าด�วยก�น

Page 16: 03 ado-dot-net-access

การใช�งานออบเจ%กต' การใช�งานออบเจ%กต' DataReaderDataReader

● ท:าหน�าท��เก5บผลค วร�ข�อม�ลออกมาจากฐานข�อม�ล โดยท��จะอ/านคร�Bง 1 เร5คคอร6ด (record)

● สถานะเคล0�อนท��ไปข�าง (Forward-Only) เพ�ยงอย/างเด�ยว

● เก ดจากการค วร�ช.ดค:า ส��ง SQL ของออบเจ5กต6 Command

● เหมาะก�บการค วร�ข�อม�ลขนาดเล5ก เช/น การแสดงข�อม�ลหร0อการอ/านค/าขEBนมา เพ0�อใช�เป?นเง0�อนไขในการท:างาน

● สามารถร�บข�อม�ลจากออบเจ5กต6 DataSet

Page 17: 03 ado-dot-net-access

การใช�งานเมธอด การใช�งานเมธอด Execute Execute ของของออบเจ5กต6 ออบเจ5กต6 CommandCommand

● เมธอด ExecuteReader( )ท:าหน�าท��ร�นช.ดค:าส��ง SQL ประเภทเร�ยกด�หร0ออ/านข�อม�ล ผลการร�นได�ออบเจ5กต6 DataReader

● เมธอด ExecuteScalar( )ท:าหน�าท��เช/นเด�ยวก�บเมธอด ExecuteReader( ) แต/ม�ข�อแตกต/างก5ค0อ เมธอดน�Bส/งค/ากล�บมาเพ�ยงค/าเด�ยวเท/าน�Bน

● เมธอด ExecuteQuery( )ท:าหน�าท��ร�นช.ดค:าส��ง SQL ประเภทเพ �ม แก�ไข หร0อลบข�อม�ล

Page 18: 03 ado-dot-net-access

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

Page 19: 03 ado-dot-net-access

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งในเวลาเด�ยวก�น

Page 20: 03 ado-dot-net-access

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

Page 21: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 21

ข�อแตกต#างระหว#างออบเจ%กต'ข�อแตกต#างระหว#างออบเจ%กต'DataReader DataReader ก�บออบเจ%กต' ก�บออบเจ%กต'

DataSetDataSetออบเจ%กต' DataSet (ต#อ)● เก ดมาจากสถาปCตยกรรม Disconnected ซE�ง

หมายถEง เม0�อค.ณค วร�ข�อม�ลมาเก5บไว�ท��ออบเจ5กต6 DataSet แล�ว ก5จะม�การต�ดการเช0�อมต/อก�บแหล/งข�อม�ลโดยอ�ตโนม�ต ท�นท�

Page 22: 03 ado-dot-net-access

K.Warawut บทท�� 3 ADO.NET ก�บฐานข�อม�ล Access 2003/2007 22

การตรวจสอบโครงสร�างของฐานการตรวจสอบโครงสร�างของฐานข�อม�ล ข�อม�ล Access 2003/2007Access 2003/2007

● ปกต แล�วเราใช�กล./มออบเจ5กต6 ADO.NET ค วร�ข�อม�ลออกมาจากฐานข�อม�ล แต/ก5ม�การค วร�อ�กล�กษณะหนE�งท��ไม/ต�องการข�อม�ลแต/อย/างใด แต/ต�องการตรวจสอบโครงสร�างของฐานข�อม�ล

Page 23: 03 ado-dot-net-access

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 ด�งกล/าวออกมาได�เลย

Page 24: 03 ado-dot-net-access

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 ด�งกล/าวต�องการต�วแปรก��ต�ว และต�วแปรแต/ละต�วเป?นข�อม�ลชน ดใด

Page 25: 03 ado-dot-net-access

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

Page 26: 03 ado-dot-net-access

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

Page 27: 03 ado-dot-net-access

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

Page 28: 03 ado-dot-net-access

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