7. Data Provider
●
เรยกเต-มๆ คอ .NET Framework Data Provider
●
คอ สวนทดแลในเรองการเชอมตอก"บฐานขอมล และ
การสง Query ไปประมวลผลย"งฐานขอมล
●
Data Provider ไมใชออบเจ-กต.เดยวๆ เหมอนอยาง
DataSet หากแตเป,นกล7มของออบเจ-กต.ทเกยวของ
ส"มพ"นธ.ก"น ซงรวมก"นท!างานเพอเป,นต"วกลางในการ
ร"บ-สงระหวางฐานขอมลก"บ DataSet
K.Warawut Create Database Application by using ADO.NET 7
8. 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 เป,นตน
K.Warawut Create Database Application by using ADO.NET 8
9. Data Provider (ตอ)
จ"ดเตรยมไว 4 ชน*ดแยกตามประเภทของฐานขอมล ด"งน1
●
Oracle Data Provider (หรอ OracleClient Data
Provider) เป,น Data Provider ทถกออกแบบมา
ส!าหร"บฐานขอมล Oracle โดยเฉพาะ
●
ODBC Data Provider เป,น Data Provider ส!าหร"บ
แหลงขอมลใดๆ ก-ตามทม ODBC Driver ใหใชใน
การต*ดตอ
K.Warawut Create Database Application by using ADO.NET 9
10. Data Provider (ตอ)
Data Provider แตละชน*ดขางตนจะประกอบไปดวย
ออบเจ-กต.ตางๆ ทท!างานรวมก"น ด"งน1
●
ออบเจกต Connection ร"บผ*ดชอบในเรองการเชอม
ตอก"บฐานขอมล
●
ออบเจกต Command ท!าหนาทสงค!าส"งไปประมวล
ผลย"งฐานขอมล ซงค!าส"งน"1นอาจเป,น Query ในภาษา
SQL หรอเป,นการเรยกใช Stored Procedure ในฐาน
ขอมล เป,นตน
K.Warawut Create Database Application by using ADO.NET 10
11. Data Provider (ตอ)
Data Provider แตละชน*ดขางตนจะประกอบไปดวย
ออบเจ-กต.ตางๆ ทท!างานรวมก"น ด"งน1
●
ออบเจกต DataAdapter ท!าหนาทดงขอมลจาก
ฐานขอมลมาใส (fill) ลงใน DataSet และน!าขอมล
จาก DataSet ไปอ"พเดทลงฐานขอมล
K.Warawut Create Database Application by using ADO.NET 11
12. Data Provider (ตอ)
Data Provider แตละชน*ดขางตนจะประกอบไปดวย
ออบเจ-กต.ตางๆ ทท!างานรวมก"น ด"งน1
●
ออบเจกต DataReader เป,นออบเจ-กต.ทใชท!างาน
ก"บ Result Set ในล"กษณะ forward-only (เลอนต!า
แหนงเรคอร.ดไปขางหนาไดอยางเดยว) และ read-
only (อานขอมลไดอยางเดยว แตเปลยนแปลงแกไข
ไมได) โดยระหวางทใชออบเจ-กต.น1ท!างานก"บขอมล
ในฐานขอมล จะตองเป4ดการเชอมตอก"บฐานขอมลไว
ตลอดเวลา จงเป,นรปแบบทเรยกวา Connected
Data Access ซงตรงก"นขามก"บการท!างานของ
DataSet
14. การเชอมตอกบฐานขอมล
●
การเชอมตอก"บฐานขอมล Microsoft Access โดย
ท"วไปจะใชคลาส OleDbConnection ในเนมสเปซ
System.Data.OleDb
●
การเชอมตอก"บฐานขอมล Microsoft SQL Server ก-
จะใชคลาส SqlConnection ในเนมสเปซ
System.Data.SqlClient
K.Warawut Create Database Application by using ADO.NET 14
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( )
K.Warawut Create Database Application by using ADO.NET 15
Imports System.Data.OleDb
17. การเชอมตอกบฐานขอมล (ตอ)
Dim cn As New System.Data.OleDb.OleDbConnection( )
cn.ConnectionString = “Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source=C:NWIND.MDB”
or
Dim cn As New System.Data.OleDb.OleDbConnection( _
“Provider=Microsoft.Jet.OLEDB.4.0;” & _
“Data Source=C:NWIND.MDB”
K.Warawut Create Database Application by using ADO.NET 17
18. เป4ดและป4ดการเชอมตอ
●
เป4ดการเชอมตอ ใชเมธอด Open ของออบเจ-กต.
Connection
cn.Open( )
●
ป4ดการเชอมตอ ใชเมธอด Close ของออบเจ-กต.
Connection
cn.Close( )
K.Warawut Create Database Application by using ADO.NET 18
21. ท!างานก"บขอมลในฐานขอมลดวย
Command Object (ตอ)
●
Command Object อาจสรางข1นมาจากคลาส
OleDbCommand, SqlCommand,
OracleCommand หรอ OdbcCommand ข1นอยก"บ
ชน*ดของ Data Provider ทเลอกใช
Dim cm As New OleDb.OleDbCommand( )
●
หล"งจากสรางออบเจ-กต. Command ข1นมาแลว จะ
ตองก!าหนดคาใหก"บพร-อพเพอร.ต1ตางๆ ไดแก พร-อพ
เพอร.ต1 Connection, CommandText และ (ถา
จ!าเป,น) CommandType
K.Warawut Create Database Application by using ADO.NET 21
22. ท!างานก"บขอมลในฐานขอมลดวย
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
K.Warawut Create Database Application by using ADO.NET 22
27. ท!างานก"บขอมลในฐานขอมลดวย
Command Object (ตอ)
CommandType Properties (ตอ)
อน*วเมอเรช"น CommandType (ตอ)
●
TableDirect – ก!าหนดวาคาสตร*งในพร-อพเพอร.ต1
CommandText คอชอเทเบ*ลในฐานขอมล ซง
Command Object จะใหผลล"พธ.เป,น Result Set
ของขอมลท7ก field และท7ก record ในเทเบ*ลน"1น
K.Warawut Create Database Application by using ADO.NET 27
28. ท!างานก"บขอมลในฐานขอมลดวย
Command Object (ตอ)
●
สามารถก!าหนด CommandText Properites และ
Connection ไปพรอมก"บการสราง Command
Object ไดเลย
Dim strSQL As String = “SELECT * FROM Customers”
Dim cm As New OleDb.Command(strSQL, cn)
K.Warawut Create Database Application by using ADO.NET 28
30. ประมวลผลค!าส"งใน Command
Object (ตอ)
●
ExecuteNonQuery Method จะสงค!าส"งไป
ประมวลผลแตไมมคนคาใดๆ กล"บมาให เราจงม"กใช
เมธอดน1ประมวลผลค!าส"ง SQL หรอ Stored
Procedure ทเป,นการเพ*ม ลบ และแกไขขอมล
●
ExecuteScalar Method จะใหผลล"พธ.เป,นขอมล
ฟ4ลด.แรกของเรคอร.ดแรกใน Result Set ไมวา
Result Set ทไดจะมกฟ4ลด.และกเรคอร.ดก-ตาม จง
เหมาะส!าหร"บการประมวลผลค!าส"ง SQL หรอ Stored
Procedure ทใชหาผลสร7ปของขอมล
K.Warawut Create Database Application by using ADO.NET 30
31. ประมวลผลค!าส"งใน Command
Object (ตอ)
●
ExecuteReader Method จะใหผลล"พธ.เป,นออบ
เจ-กต. DataReader ทใชเขาถง Result Set ใน
ล"กษณะ forward-only และ read-only
K.Warawut Create Database Application by using ADO.NET 31
32. การใชงาน DataReader
สราง DataReader
●
DataReader Object คอ ออบเจ-กต.ของคลาส
OleDbDataReader, SqlDataReader,
OracleDataReader หรอ OdbcDataReader ข1นอย
ก"บชน*ด Data Provider ทใช
●
DataReader Object จะไดมาจากการเรยก
ExecuteReader Method ของ Command Object
เทาน"น
1 ไมระบค สง New
Dim dr As OleDb.OleDbDataReader เพอสร งออบเจกต
Dr = cm.ExecuteReader( )
K.Warawut Create Database Application by using ADO.NET 32
33. การใชงาน DataReader (ตอ)
ใช DataReader เขาถงขอมลใน Result Set
●
เมอตองการเขาถงขอมลใน Result Set จะตองเรยก
เมธอด Read ของ DataReader เพออานขอมลของ
เรคอร.ดแรกเขามาเก-บไวใน DataReader ซงถาหาก
เมธอด Read สามารถอานเรคอร.ดมาได ม"นจะให
ผลล"พธ.เป,นคา True พรอมท"1งขย"บต"วช1ไปย"งเรคอร.ด
ถ"ดไป
Do While dr.Read( )
'โคดทใชท ง นกบแตละเรคอรดใน result set ทถ$กอ นม เกบไวใน DataReader
Loop
K.Warawut Create Database Application by using ADO.NET 33
34. การใชงาน DataReader (ตอ)
พรอพเพอรต Item ของ DataReader
●
รปแบบ: datareader.Item(field)
datareader ออบเจกต DataReader
field ชอหรอหมายเลขลาดบของฟลดทตองการเขาถ!งขอม"ล
While dr.Read( )
Dim myObject As Object = dr.Item(3)
Dim myOtherObject As Object = dr.Item(“CustomerID”)
Loop While
MsgBox(dr.Item(“CustomerID”).ToString( ))
K.Warawut Create Database Application by using ADO.NET 34
35. การใชงาน DataReader (ตอ)
ป!ด DataReader
●
เรยกเมธอด Close
dr.Close( )
K.Warawut Create Database Application by using ADO.NET 35
36. Example:
DataReaderDemo Projects
K.Warawut Create Database Application by using ADO.NET 36
37. การท!างานก"บ Query ทร"บ Parameter
●
บางคร"1งเราไมรค!าส"ง SQL ทจะสงไปประมวลผลย"ง
ฐานขอมลจนกวาจะถงชวง Run Time เชน เราอาจ
สรางหนาจอใหผใชคนหาชอส*นคาในบร*ษ"ทของเรา
ซงค!าส"ง SQL ทใชมล"กษณะ ด"งน1
SELECT * FROM Products WHERE ProductName Like ค ทใชคนห
K.Warawut Create Database Application by using ADO.NET 37
38. Example:
SearchDemo Projects
K.Warawut Create Database Application by using ADO.NET 38
39. การท!างานก"บ Query ทร"บ Parameter
(ตอ)
●
การใชค!าส"ง SQL ทมการร"บ Parameter โดยถาเป,น
ค!าส"ง SQL ทจะสงไปประมวลผลย"งฐานขอมล
Microsoft Access ใหระบ7เครองหมายค!าถาม (?) ลง
ไปในค!าส"งตรงต!าแหนงทตองการใหแทนดวยคาของ
Parameter เชน
SELECT * FROM Products WHERE ProductName Like ?
●
จากน"1นใหสราง Parameter ข1นมาแลวก!าหนดคาตาม
ทตองการ กอนจะสงค!าสงไปประมวลผล
K.Warawut Create Database Application by using ADO.NET 39
40. การท!างานก"บ Query ทร"บ Parameter
(ตอ)
สรางพาราม#เตอร
●
พาราม*เตอร.ของค!าส"ง SQL คอ ออบเจ-กต.ของคลาส
OleDbParameter, SqlParameter,
OracleParameter หรอ OdbcParameter ข1นอยก"บ
ชน*ดของ Data Provider ทใช ในกรณจะตองใช
คลาส OleDbParameter ซงคอนสตร"คเตอร.ของม"นม
รปแบบการใชงานรปแบบด"งน1
Format: OleDbParameter(name, value)
name ชอ parameter
value ค$าทกาหนดให parameter
Dim param As New OleDbParameter(“product_name”, “Coffee”)