03 2-create-db-application-ado-dot-net

46
Create Database Create Database Application by using Application by using ADO.NET ADO.NET Suan Dusit Rajabhat University, Phitsanulok Campus Suan Dusit Rajabhat University, Phitsanulok Campus Mr.Warawut Khangkhan Mr.Warawut Khangkhan

description

สร้างแอพพลิเคชั่นฐานข้อมูล

Transcript of 03 2-create-db-application-ado-dot-net

Page 1: 03 2-create-db-application-ado-dot-net

Create Database Create Database Application by using Application by using

ADO.NETADO.NET

Suan Dusit Rajabhat University, Phitsanulok CampusSuan Dusit Rajabhat University, Phitsanulok CampusMr.Warawut KhangkhanMr.Warawut Khangkhan

Page 2: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 2

ADO.NETADO.NET● ย�อมาจาก ActiveX Data Objects● คอ เทคโนโลย�การเข�าถ�งข�อม�ล (Data Access

Technology) ของ .NET ท��ช�วยให�เราเข�ยนโปรแกรมเพ�อเข�าถ�งและท!างานก"บข�อม�ลจากแหล�งข�อม�ล (Data Source) ประเภทต�างๆ ได�อย�างเร�ยบง�ายแต�ม�ประส*ทธ*ภาพ

Page 3: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 3

ส�วนประกอบการท!างานของ ส�วนประกอบการท!างานของ ADO.NETADO.NET

แบ�งออกเป,น DataSet และ Data Provider

Page 4: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 4

DataSetDataSet● คอ ออบเจ-กต. ซ��งเป,นต"วแทนของข�อม�ลท��โปรแกรม

ของเราด�งมาจากฐานข�อม�ล● DataSet จะเก-บส!าเนา (Copy) ของข�อม�ลส�วนน"1นใน

ฐานข�อม�ลไว�ในหน�วยความจ!าของเคร�อง Client (เคร�องท��โปรแกรมของเราท!างานอย��)

● การท!างานต�างๆ ก"บข�อม�ลใน DataSet จ�งเป,นอ*สระจากฐานข�อม�ล และเม�อถ�งเวลาท��เหมาะสมเราสามารถน!าข�อม�ลจาก DataSet ไปอ"พเดท (Update) ลงฐานข�อม�ลได�

Page 5: 03 2-create-db-application-ado-dot-net

DataSet (DataSet (ต�อต�อ))● เป,นร�ปแบบท��เร�ยกว�า Disconnected Data Access

หรอ “การเข�าถ�งข�อม�ลแบบไม�ต�องเช�อมต�อก"บฐานข�อม�ล (ไว�ตลอดเวลา)” และเร�ยกข�อม�ลใน DataSet ว�า Disconnected Data เน�องจากโปรแกรมจะม�การเช�อมต�อก"บฐานข�อม�ลเท�าท��จ!าเป,นเท�าน"1น เช�น

– การด�งข�อม�ล โปรแกรมจะเป4ดการเช�อมต�อก"บฐานข�อม�ลเพ�อด�งข�อม�ลเข�ามาแล�วป4ดการเช�อมต�อท"นท�หล"งจากด�งข�อม�ลเสร-จ

– ส!าหร"บการแก�ไข เพ*�ม หรอลบข�อม�ล ก-เช�นเด�ยวก"น โปรแกรมจะเช�อมต�อไปย"งฐานข�อม�ลเพ�อร"น Query ของค!าส"�ง UPDATE, INSERT หรอ DELETE จากน"1นการเช�อมต�อจะถ�กป4ดลง

Page 6: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 6

DataSet (DataSet (ต�อต�อ))● DataSet ย"งออบเจ-กต.ย�อยท��ส!าค"ญ คอ DataTable

และ DataRow ท��เป,นต"วแทนของเทเบ*ล (ตารางข�อม�ล) และเรคอร.ด (แถวข�อม�ล) ตามล!าด"บ รวมถ�ง DataRelation ท��เป,นต"วแทนของความส"มพ"นธ.ระหว�างเทเบ*ลใน DataSet เป,นต�น

Page 7: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 7

Data ProviderData Provider● เร�ยกเต-มๆ คอ .NET Framework Data Provider● คอ ส�วนท��ด�แลในเร�องการเช�อมต�อก"บฐานข�อม�ล และ

การส�ง Query ไปประมวลผลย"งฐานข�อม�ล● Data Provider ไม�ใช�ออบเจ-กต.เด��ยวๆ เหมอนอย�าง

DataSet หากแต�เป,นกล7�มของออบเจ-กต.ท��เก��ยวข�องส"มพ"นธ.ก"น ซ��งร�วมก"นท!างานเพ�อเป,นต"วกลางในการร"บ-ส�งระหว�างฐานข�อม�ลก"บ DataSet

Page 8: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 8

Data Provider (Data Provider (ต�อต�อ))

จ"ดเตร�ยมไว� 4 ชน*ดแยกตามประเภทของฐานข�อม�ล ด"งน�1● SQL Server Data Provider (หรอ SQLClient

Data Provider) เป,น Data Provider ท��ถ�กออกแบบมาส!าหร"บฐานข�อม�ล Microsoft SQL Server ต"1งแต�เวอร.ช"�น 7 ข�1นไปโดยเฉพาะ

● OLEDB Data Provider เป,น Data Provider ส!าหร"บแหล�งข�อม�ลใดๆ ก-ตามท��สน"บสน7นการต*ดต�อผ�านทางอ*นเทอร.เฟซ OLEDB เช�น ฐานข�อม�ล Microsoft Access เป,นต�น

Page 9: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 9

Data Provider (Data Provider (ต�อต�อ))

จ"ดเตร�ยมไว� 4 ชน*ดแยกตามประเภทของฐานข�อม�ล ด"งน�1● Oracle Data Provider (หรอ OracleClient Data

Provider) เป,น Data Provider ท��ถ�กออกแบบมาส!าหร"บฐานข�อม�ล Oracle โดยเฉพาะ

● ODBC Data Provider เป,น Data Provider ส!าหร"บแหล�งข�อม�ลใดๆ ก-ตามท��ม� ODBC Driver ให�ใช�ในการต*ดต�อ

Page 10: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 10

Data Provider (Data Provider (ต�อต�อ))

Data Provider แต�ละชน*ดข�างต�นจะประกอบไปด�วยออบเจ-กต.ต�างๆ ท��ท!างานร�วมก"น ด"งน�1● ออบเจ�กต� Connection ร"บผ*ดชอบในเร�องการเช�อม

ต�อก"บฐานข�อม�ล● ออบเจ�กต� Command ท!าหน�าท��ส�งค!าส"�งไปประมวล

ผลย"งฐานข�อม�ล ซ��งค!าส"�งน"1นอาจเป,น Query ในภาษา SQL หรอเป,นการเร�ยกใช� Stored Procedure ในฐานข�อม�ล เป,นต�น

Page 11: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 11

Data Provider (Data Provider (ต�อต�อ))

Data Provider แต�ละชน*ดข�างต�นจะประกอบไปด�วยออบเจ-กต.ต�างๆ ท��ท!างานร�วมก"น ด"งน�1● ออบเจ�กต� DataAdapter ท!าหน�าท��ด�งข�อม�ลจาก

ฐานข�อม�ลมาใส� (fill) ลงใน DataSet และน!าข�อม�ลจาก DataSet ไปอ"พเดทลงฐานข�อม�ล

Page 12: 03 2-create-db-application-ado-dot-net

Data Provider (Data Provider (ต�อต�อ))

Data Provider แต�ละชน*ดข�างต�นจะประกอบไปด�วยออบเจ-กต.ต�างๆ ท��ท!างานร�วมก"น ด"งน�1● ออบเจ�กต� DataReader เป,นออบเจ-กต.ท��ใช�ท!างาน

ก"บ Result Set ในล"กษณะ forward-only (เล�อนต!าแหน�งเรคอร.ดไปข�างหน�าได�อย�างเด�ยว) และ read-only (อ�านข�อม�ลได�อย�างเด�ยว แต�เปล��ยนแปลงแก�ไขไม�ได�) โดยระหว�างท��ใช�ออบเจ-กต.น�1ท!างานก"บข�อม�ลในฐานข�อม�ล จะต�องเป4ดการเช�อมต�อก"บฐานข�อม�ลไว�ตลอดเวลา จ�งเป,นร�ปแบบท��เร�ยกว�า Connected Data Access ซ��งตรงก"นข�ามก"บการท!างานของ DataSet

Page 13: 03 2-create-db-application-ado-dot-net

K.Warawut 13

คลาสท��เป,นต�นแบบของออบเจ-กต.ท"1ง คลาสท��เป,นต�นแบบของออบเจ-กต.ท"1ง 44

SQL Server Data Provider

OLEDB Data Provider

Oracle Data Provider

ODBC Data Provider

ชน*ดของ Data Provider

ช�อคลาสต�นแบบของออบเจ-กต. Connection, Command,

DataAdapter และ DataReader ตามล!าด"บ

SqlCommand, SqlDataAdapter และ SqlDataReader โดยท"�งหมดอย��ในเนมสเปซ System.Data.SqlClientOleDbConnection, OleDbCommand, OleDbDataAdapter และ OleDbDataReader โดยท"1งหมดอย��ในเนมสเปซ System.Data.OleDbOracleConnection, OracleCommand, OracleDataAdapter และ OracleDataReader โดยท"1งหมดอย��ในเนมสเปซ System.Data.OracleClientOdbcConnection, OdbcCommand, OdbcDataAdapter และ OdbcDataReader โดยท"1งหมดอย��ในเนมสเปซ System.Data.Odbc

Page 14: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 14

การเช �อมต�อก�บฐานข�อม�ลการเช �อมต�อก�บฐานข�อม�ล

● การเช�อมต�อก"บฐานข�อม�ล Microsoft Access โดยท"�วไปจะใช�คลาส OleDbConnection ในเนมสเปซ System.Data.OleDb

● การเช�อมต�อก"บฐานข�อม�ล Microsoft SQL Server ก-จะใช�คลาส SqlConnection ในเนมสเปซ System.Data.SqlClient

Page 15: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 15

การเช �อมต�อก�บฐานข�อม�ล การเช �อมต�อก�บฐานข�อม�ล ((ต�อต�อ))● ก!าหนดรายละเอ�ยดการเช�อมต�อก"บฐานข�อม�ลท��พร-อพ

เพอร.ต�1 ConnectionString

Dim cn As New System.Data.OleDb.OleDbConnection( )cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;” & _

“Data Source=C:\NWIND.MDB”

Dim cn As New System.Data.OleDb.OleDbConnection( )

Dim cn As New OleDb.OleDbConnection( )=

Dim cn As New OleDbConnection( )=

Imports System.Data.OleDb

Page 16: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 16

การเช �อมต�อก�บฐานข�อม�ล การเช �อมต�อก�บฐานข�อม�ล ((ต�อต�อ))● การเช�อมต�อก"บฐานข�อม�ลระหว�าง Access

2003/2007

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

Access 2003 นามสก�ล .mdbAccess 2007 นามสก�ล .accdb

Page 17: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 17

การเช �อมต�อก�บฐานข�อม�ล การเช �อมต�อก�บฐานข�อม�ล ((ต�อต�อ))

Dim cn As New System.Data.OleDb.OleDbConnection( )cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;” & _

“Data Source=C:\NWIND.MDB”

Dim cn As New System.Data.OleDb.OleDbConnection( _“Provider=Microsoft.Jet.OLEDB.4.0;” & _“Data Source=C:\NWIND.MDB”

or

Page 18: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 18

เป4ดและป4ดการเช�อมต�อเป4ดและป4ดการเช�อมต�อ

● เป4ดการเช�อมต�อ ใช�เมธอด Open ของออบเจ-กต. Connection

cn.Open( )● ป4ดการเช�อมต�อ ใช�เมธอด Close ของออบเจ-กต.

Connectioncn.Close( )

Page 19: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 19

เป4ดและป4ดการเช�อมต�อ เป4ดและป4ดการเช�อมต�อ ((ต�อต�อ))● กรณ�ท��ใช� DataAdapter เป,นต"วกลางในการด�ง

ข�อม�ลจากฐานข�อม�ลมาเก-บไว�ใน DataSet และส�งข�อม�ลจาก DataSet ไปอ"พเดทลงฐานข�อม�ลน"1น ไม�จ!าเป,นต�องเป4ดและป4ดการเช�อมต�อก"บฐานข�อม�ลเอง เน�องจาก DataAdapter จะเป4ดและป4ดการเช�อมต�อก"บฐานข�อม�ลให�โดยอ"ตโนม"ต*

Page 20: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 20

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command ObjectCommand Object

● Command Object ต"วแทนของค!าส"�งท��ใช�ท!างานก"บฐานข�อม�ล ซ��งค!าส"�งท��ว�าน�1อาจเป,น Query ของประโยคค!าส"�ง SELECT, INSERT, UPDATE และ DELETE ในภาษา SQL หรอเป,นการเร�ยกไปย"ง Stored Procedure ในฐานข�อม�ลก-ได� (รวมท"1งอาจเป,นค!าส"�งในกล7�ม DDL ของภาษา SQL ท��ใช�สร�างเทเบ*ลใหม�, แก�ไขโครงสร�างของเทเบ*ล ฯลฯ ก-ได�เช�นก"น)

Page 21: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 21

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

● Command Object อาจสร�างข�1นมาจากคลาส OleDbCommand, SqlCommand, OracleCommand หรอ OdbcCommand ข�1นอย��ก"บชน*ดของ Data Provider ท��เลอกใช�

● หล"งจากสร�างออบเจ-กต. Command ข�1นมาแล�ว จะต�องก!าหนดค�าให�ก"บพร-อพเพอร.ต�1ต�างๆ ได�แก� พร-อพเพอร.ต�1 Connection, CommandText และ (ถ�าจ!าเป,น) CommandType

Dim cm As New OleDb.OleDbCommand( )

Page 22: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 22

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

Connection Properties● ค!าส"�งใน Command Object จะถ�กส�งไปประมวลผล

ย"งฐานข�อม�ลผ�านทางการเช�อมต�อท��ระบ7ไว�ท�� Connection Properties

Dim cn As New System.Data.OleDb.OleDbConnection( )cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;” & _

“Data Source=C:\NWIND.MDB”Dim cm As New OleDb.Command( )cm.Connection = cn

Page 23: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 23

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

CommandText Properties● ใช�ก!าหนดค!าส"�งท��จะส�งไปประมวลผลย"งฐานข�อม�ล

เช�น ถ�าต�องการด�งข�อม�ลจาก Field CustomerID และ CompanyName ในเทเบ*ล Customers จะต�องก!าหนดค�าสตร*งท��เป,นค!าส"�ง SQL ให�ก"บ CommandText Properties ของ Command Object

cm.CommandText = “SELECT CustomerID, CompanyName ” & _“FROM Customers”

Page 24: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 24

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

CommandType Properties● ใช�ก!าหนดว�าค�าสตร*ง (String) ใน CommandType

Properties คอ ค!าส"�งแบบใด โดยค�าท��ก!าหนดได� คอ (ค�าเหล�าน�1ถ�กรวบรวมไว�ในอ�น*วเมอเรช"�น CommandType)

Page 25: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 25

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

CommandType Properties (ต�อ)อ�น*วเมอเรช"�น CommandType● Text – ก!าหนดว�าค�าสตร*งในพร-อพเพอร.ต�1

CommandText คอประโยคค!าส"�งในภาษา SQL ซ��งฐานข�อม�ลจะประมวลผลค!าส"�ง SQL น"1น ค�า Text น�1เป,นค�าด�ฟอลต.ของพร-อพเพอร.ต�1 CommandType ด"งน"1นถ�าหากค�าสตร*งท��ก!าหนดไว�ท��พร-อพเพอร.ต�1 CommandText คอค!าส"�ง SQL ก-ไม�จ!าเป,นต�องก!าหนดพร-อพเพอร.ต�1 CommandType

Page 26: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 26

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

CommandType Properties (ต�อ)อ�น*วเมอเรช"�น CommandType (ต�อ)● StoredProcedure – ก!าหนดว�าค�าสตร*งใน

พร-อพเพอร.ต�1 CommandText คอช�อ Stored Procedure ในฐานข�อม�ล ซ��งจะท!าให� Stored Procedure น"1นถ�กประมวลผล

Page 27: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 27

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

CommandType Properties (ต�อ)อ�น*วเมอเรช"�น CommandType (ต�อ)● TableDirect – ก!าหนดว�าค�าสตร*งในพร-อพเพอร.ต�1

CommandText คอช�อเทเบ*ลในฐานข�อม�ล ซ��ง Command Object จะให�ผลล"พธ.เป,น Result Set ของข�อม�ลท7ก field และท7ก record ในเทเบ*ลน"1น

Page 28: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 28

ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย ท!างานก"บข�อม�ลในฐานข�อม�ลด�วย Command Object (Command Object (ต�อต�อ))

● สามารถก!าหนด CommandText Properites และ Connection ไปพร�อมก"บการสร�าง Command Object ได�เลย

Dim strSQL As String = “SELECT * FROM Customers”Dim cm As New OleDb.Command(strSQL, cn)

Page 29: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 29

ประมวลผลค!าส"�งใน ประมวลผลค!าส"�งใน Command Command ObjectObject

หล"งจากก!าหนดพร-อพเพอร.ต�1 Connection, CommandText และ CommandType แล�ว ให�เร�ยกใช�เมธอด (Method) ใดเมธอดหน��งต�อไปน�1ของ Command Object เพ�อส�งค!าส"�งไปประมวลผลย"งฐานข�อม�ล● ExecuteNonQuery● ExecuteScalar● ExecuteReader

Page 30: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 30

ประมวลผลค!าส"�งใน ประมวลผลค!าส"�งใน Command Command Object (Object (ต�อต�อ))

● ExecuteNonQuery Method จะส�งค!าส"�งไปประมวลผลแต�ไม�ม�คนค�าใดๆ กล"บมาให� เราจ�งม"กใช�เมธอดน�1ประมวลผลค!าส"�ง SQL หรอ Stored Procedure ท��เป,นการเพ*�ม ลบ และแก�ไขข�อม�ล

● ExecuteScalar Method จะให�ผลล"พธ.เป,นข�อม�ลฟ4ลด.แรกของเรคอร.ดแรกใน Result Set ไม�ว�า Result Set ท��ได�จะม�ก��ฟ4ลด.และก��เรคอร.ดก-ตาม จ�งเหมาะส!าหร"บการประมวลผลค!าส"�ง SQL หรอ Stored Procedure ท��ใช�หาผลสร7ปของข�อม�ล

Page 31: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 31

ประมวลผลค!าส"�งใน ประมวลผลค!าส"�งใน Command Command Object (Object (ต�อต�อ))

● ExecuteReader Method จะให�ผลล"พธ.เป,นออบเจ-กต. DataReader ท��ใช�เข�าถ�ง Result Set ในล"กษณะ forward-only และ read-only

Page 32: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 32

การใช�งาน การใช�งาน DataReaderDataReader

สร�าง DataReader● DataReader Object คอ ออบเจ-กต.ของคลาส

OleDbDataReader, SqlDataReader, OracleDataReader หรอ OdbcDataReader ข�1นอย��ก"บชน*ด Data Provider ท��ใช�

● DataReader Object จะได�มาจากการเร�ยก ExecuteReader Method ของ Command Object เท�าน"1น

Dim dr As OleDb.OleDbDataReaderDr = cm.ExecuteReader( )

ไม�ระบ�คส� ง New เพ� อสร�งออบเจ�กต�

Page 33: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 33

การใช�งาน การใช�งาน DataReader (DataReader (ต�อต�อ))

ใช� DataReader เข�าถ�งข�อม�ลใน Result Set● เม�อต�องการเข�าถ�งข�อม�ลใน Result Set จะต�องเร�ยก

เมธอด Read ของ DataReader เพ�ออ�านข�อม�ลของเรคอร.ดแรกเข�ามาเก-บไว�ใน DataReader ซ��งถ�าหากเมธอด Read สามารถอ�านเรคอร.ดมาได� ม"นจะให�ผลล"พธ.เป,นค�า True พร�อมท"1งขย"บต"วช�1ไปย"งเรคอร.ดถ"ดไป

Do While dr.Read( )'โค�ดท� ใช�ทงนก�บแต�ละเรคอร�ดใน result set ท� ถ$กอ�นมเก�บไว�ใน DataReader

Loop

Page 34: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 34

การใช�งาน การใช�งาน DataReader (DataReader (ต�อต�อ))

พร�อพเพอร�ต�� Item ของ DataReader● ร�ปแบบ: datareader.Item(field)

While dr.Read( )Dim myObject As Object = dr.Item(3)Dim myOtherObject As Object = dr.Item(“CustomerID”)

Loop While

datareader ออบเจ กต� DataReaderfield ช��อหร�อหมายเลขล�าด�บของฟ�ลด�ท��ต�องการเข�าถ!งข�อม"ล

MsgBox(dr.Item(“CustomerID”).ToString( ))

Page 35: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 35

การใช�งาน การใช�งาน DataReader (DataReader (ต�อต�อ))

ป!ด DataReader● เร�ยกเมธอด Close

dr.Close( )

Page 36: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 36

Example:Example:

DataReaderDemo ProjectsDataReaderDemo Projects

Page 37: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 37

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ ParameterParameter● บางคร"1งเราไม�ร��ค!าส"�ง SQL ท��จะส�งไปประมวลผลย"ง

ฐานข�อม�ลจนกว�าจะถ�งช�วง Run Time เช�น เราอาจสร�างหน�าจอให�ผ��ใช�ค�นหาช�อส*นค�าในบร*ษ"ทของเรา ซ��งค!าส"�ง SQL ท��ใช�ม�ล"กษณะ ด"งน�1

SELECT * FROM Products WHERE ProductName Like ค��ท��ใชคนห�

Page 38: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 38

Example:Example:

SearchDemo ProjectsSearchDemo Projects

Page 39: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 39

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

● การใช�ค!าส"�ง SQL ท��ม�การร"บ Parameter โดยถ�าเป,นค!าส"�ง SQL ท��จะส�งไปประมวลผลย"งฐานข�อม�ล Microsoft Access ให�ระบ7เคร�องหมายค!าถาม (?) ลงไปในค!าส"�งตรงต!าแหน�งท��ต�องการให�แทนด�วยค�าของ Parameter เช�น

● จากน"1นให�สร�าง Parameter ข�1นมาแล�วก!าหนดค�าตามท��ต�องการ ก�อนจะส�งค!าส�งไปประมวลผล

SELECT * FROM Products WHERE ProductName Like ?

Page 40: 03 2-create-db-application-ado-dot-net

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

สร�างพาราม#เตอร�● พาราม*เตอร.ของค!าส"�ง SQL คอ ออบเจ-กต.ของคลาส

OleDbParameter, SqlParameter, OracleParameter หรอ OdbcParameter ข�1นอย��ก"บชน*ดของ Data Provider ท��ใช� ในกรณ�จะต�องใช�คลาส OleDbParameter ซ��งคอนสตร"คเตอร.ของม"นม�ร�ปแบบการใช�งานร�ปแบบด"งน�1

name ช��อ parametervalue ค$าท��ก�าหนดให� parameter

Format: OleDbParameter(name, value)

Dim param As New OleDbParameter(“product_name”, “Coffee”)

Page 41: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 41

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

เพ#�ม Parameter เข�าไปในคอลเล�คช��น Parameters● หล"งจากสร�าง Parameter มาแล�วจะต�องเพ*�มเข�าไป

ในคอลเล-คช"�น Parameters ของ Command Object ด�วย จ�งจะท!าให�ค�าของ Parameter น"1นถ�กแทนลงในค!าส"�ง SQL

● การเพ*�ม Parameter ท!าได�โดยเร�ยกเมธอด Add ของคอลเล-คช"�น Parameters ใน Command Object

cm.Parameters.Add(param)

Page 42: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 42

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

เพ#�ม Parameter เข�าไปในคอลเล�คช��น Parameters● หรออาจเร�ยกเมธอด AddWithValue เพ�อก!าหนดช�อ

และค�าของ Parameter เลยก-ได� ซ��งถ�าใช�เมธอดน�1 ก-ไม�ต�องสร�างออบเจ-กต.ของคลาส OleDbParameter ข�1นมาก�อน

cm.Parameters.AddWithValue(“product_name”, “Coffee”)

Page 43: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 43

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

เพ#�ม Parameter เข�าไปในคอลเล�คช��น Parameters● ถ�าหากค!าส"�ง SQL ม�การร"บ Parameter มากกว�า 1

ค�า จะต�องเพ*�ม Parameter เข�าไปในคอลเล-คช"�น Parameters ตามล!าด"บของเคร�องหมาย ? ท��ระบ7ในค!าส"�ง SQL ด"งน"1นจะเห-นได�ว�าช�อ Parameter ไม�ม�ความส!าค"ญเลย

Page 44: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 44

การท!างานก"บ การท!างานก"บ Query Query ท��ร"บ ท��ร"บ Parameter Parameter ((ต�อต�อ))

เพ#�ม Parameter เข�าไปในคอลเล�คช��น Parameters● แต�หากเป,นการส�งค!าส"�ง SQL ไปประมวลผลย"งฐาน

ข�อม�ล MS SQL Server ด�วยออบเจ-กต. SqlCommand เราจะระบ7 Parameter แบบม�ช�อ (Named Parameter) ลงในค!าส"�ง SQL แทนท��จะเป,นเคร�องหมาย ?

SELECT * FROM Products WHERE ProductName LIKE @product_name

Page 45: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 45

Example:Example:

SearchParamDemo ProjectsSearchParamDemo Projects

Page 46: 03 2-create-db-application-ado-dot-net

K.Warawut Create Database Application by using ADO.NET 46

Contact usContact usMr.Warawut KhangkhanMr.Warawut Khangkhan

● Social Media:http://www.facebook.com/awarawut (Profile)http://www.facebook.com/AjWarawut (Learning)http://twitter.com/awarawut

● Web Site:http://awarawut.blogspot.com

● E-Mail:[email protected][email protected]

● Mobile:083-0698-410