asp.net with c#sci.udru.ac.th/websci/download/com/rewadee/programweb/ado.pdf · อ.เรวดี...

Post on 26-Mar-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

อ.เรวด พพฒนสงเนน

ASP.NET with C#

ADO.NET

อ.เรวด พพฒนสงเนน

ADO.NET คอ?

• ADO.NET นนกคอกลมของออปเจกตภายใตเนมเสปซ System.Data ซงจะท าหนาทเปนสอกลางระหวาง โปรแกรมทพฒนาดวยสถาปตยกรรม .NET Framework กบ “แหลงขอมล” ซงในทน อาจจะหมายถง ไฟลฐานขอมลของ Access ไฟล Excel ก และยงหมายรวมไปถง ระบบจดการฐานขอมลโดยเฉพาะอยางเชน Microsoft SQL Server หรอวา Oracle เปนตน

อ.เรวด พพฒนสงเนน

ADO.NET คอ?• ADO.NET นน ไดรบการปรบปรงจาก ADO เวอรชนกอน ใหสนบสนนการ

ท างานทงแบบ Connected และ Disconnected ซงแตเดมนน จะสนบสนนเพยงการท างานแบบ Connected หรอ แบบเชอตอกบแหลงขอมลตลอดเวลาเทานน

• ดวยการท างานแบบ Disconnected คณจงสามารถทจะปดการตดตอกบแหลงขอมล ในขณะทท าการเรยกด หรอท าการแกไขขอมล และยงสามารถท าการจดเรยง (Sort) ขอมล หรอแมกระทง Filter ขอมลเพอการแสดงผลได เปนการชวยประหยดทรพยากรระบบ โดยเฉพาะอยางยง เมอเปนการท างานรวมกบระบบจดการฐานขอมลอยาง Microsoft SQL Server หรอ Oracle ทเปนการตดตอกนระหวางโปรเซสของ ASP และโปรเซสของตวระบบจดการฐานขอมล หรอ การตดตอกนระหวางเครองเซรฟเวอร 2 เครอง

อ.เรวด พพฒนสงเนน

โครงสรางของ ADO.NET

สามารถแบงออกไดเปน 2 กลม คอ

• กลมทท างานกบขอมลบนหนวยความจ า หรอท างานแบบ Disconnected

• กลมทท างานกบแหลงขอมลโดยตรง หรอท างานแบบ Connected

อ.เรวด พพฒนสงเนน

ADO.NET (Disconnected)

• คลาสกลมน จะเปนกลมทใชในการจ าลองโครงสรางของขอมล ใหมลกษณะคลายคลงกบขอมลจรงทถกเกบอยในฐานขอมลใหมากทสด โดยการจ าลอง ตาราง (Table) ฟลด (Field) และเรคคอรด (Record) หรอแมกระทงความสมพนธระหวางตาราง (Data Relation) จากแหลงขอมล มาไวในหนวยความจ าหลก ซงผพฒนาจะสามารถเรยกใช และแกไขขอมลทอยในคลาสกลมนได เสมอนวาก าลงท างานกบฐานขอมลจรง กอนทจะท าการ Update ขอมลจากคลาสเหลาน กลบไปยงแหลงขอมล

อ.เรวด พพฒนสงเนน

ADO.NET (Connected)

• คลาสในกลมนจะเปนคลาสทท าการสราง Connection กบแหลงขอมลโดยตรง ไมวาจะเปนไฟล หรอ ระบบจดการฐานขอมลกตาม และท าการอาน หรอแกไขขอมลไปยงแหลงขอมลนน ซงในคลาสกลมนจะเกยวของกบการเปด Connection ไปยงระบบจดการฐานขอมล และการใชค าสง SQL เพอท าการเรยกด หรอวาแกไขขอมล โดยคลาสกลมน จะมชอเรยกเปนทางการวา .NET Data Provider

อ.เรวด พพฒนสงเนน

ADO.NET

อ.เรวด พพฒนสงเนน

แนวทางการพฒนา ASP.NET กบ ADO.NET

อ.เรวด พพฒนสงเนน

.NET Framework Data Provider

แหลงขอมล Namespace ของ Provider

SQL Server System.Data.sqlClient

OLE DB System.Data.OleDb

ODBC System.Data.Odbc

Oracle System.Data.OracleClient

Entity Client System.Data.EntityClient

อ.เรวด พพฒนสงเนน

กลมออบเจกตหลกของสถาปตยกรรม ADO.NET

OleDbConnection SqlConnection

OleDbCommand OleDbDataAdapter SqlDataAdapter SqlCommand

OleDbDataReader SqlDataReaderDataSet

อ.เรวด พพฒนสงเนน

หนาทของแตละออบเจกต

OLEDB Data Providerท าหนาทเขาถงขอมลในฐานขอมล ใชงานรวมกบฐานขอมล MS Access

SQL Server Data Provider ท าหนาทเขาถงขอมลในฐานขอมล ใชงานรวมกบ

ฐานขอมล MS SQL Server

ออบเจกตทใชเกบผลการท างาน

อ.เรวด พพฒนสงเนน

Object หลกของ .NET Provider

Object หนาท และ คลาส

Connection ท าหนาทเชอมตอไปยงแหลงขอมล /คลาส DbConnection

Command รนค าสงทมผลตอแหลงขอมล /คลาส DbCommand

DataReader อานขอมลจากแหลงขอมลโดยตรง แบบอานไปขางหนาอยางเดยว /คลาส DbDataReader

DataAdapter กระท ากบขอมลใน DataSet แลวคอย update กลบไปยงแหลงขอมล / คลาส DbDataAdapter

อ.เรวด พพฒนสงเนน

Object หลกของ .NET Provider

Object หนาท และ คลาส

Transaction กระท ากบขอมลในแหลงขอมลแบบ Transaction /คลาส DbTransaction อยใน namespace :System.Transactions

CommandBuilder ชวยสรางค าสงคณสมบตจากDataAdapterหรอ /คลาส CommandBuilder

ConnectionStringBuilder

ชวยในการแกไข และจดการstring /คลาส DbConnectioStringBuilder

Parameter นยาม input หรอ output ทสงคาคนกลบจากค าสงหรอ store procedure / คลาส DbParameter

อ.เรวด พพฒนสงเนน

Namespace ทเรยกใชงาน

„กลมออบเจกต OLEDB Data Provider อยในเนมสเปซ System.Data.OleDb„กลมออบเจกต SQL Server Data Provider อยในเนมสเปซ System.Data.SqlClient„ออบเจกต Data Set อยในเนมสเปซ System.Data

อ.เรวด พพฒนสงเนน

กลมออบเจกต OLEDB Data Provider

WinForm Apps WebForm Apps

สวนแสดงผล User Interface -UI

DataSet

DataTable DataTable

OleDb.NET Data Provider

OleDb Command

OleDb DataAdapter

OleDbConnection

DataReader

Database

อ.เรวด พพฒนสงเนน

กลมออบเจกต SQL Server Data Provider

WinForm Apps WebForm Apps

สวนแสดงผล User Interface -UI

DataSet

DataTable DataTable

SQL Server.NET Data Provider

Sql Command Sql DataAdapter

OleDbConnection

DataReader

Database

อ.เรวด พพฒนสงเนน

ขนตอนการตดตอฐานขอมลโดยใชออบเจกตกลมOLEDB

• อยในเนมสเปซ System.Data.OleDb

• OleDbConnection class

• OleDbCommand class

• OleDbDataAdapter class

• OleDbDataReader class

อ.เรวด พพฒนสงเนน

ขนตอนการตดตอฐานขอมลโดยใชออบเจกตกลมSQLServer

• อยในเนมสเปซ System.Data.sqlClient

• sqlConnection class

• sqlCommand class

• sqlDataAdapter class

• sqlDataReader class

อ.เรวด พพฒนสงเนน

DbConnection class

ConnectionString ขอความค าสงทใชในการเปดฐานขอมลConnectionTimeOut รบคาเวลาทรอในขณะท าการตดตอกบ

ฐานขอมล ถาครบก าหนดเวลาจะหยดการตดตอและแสดงขอผดพลาด

State สถานการณตดตอฐานขอมล

„ 0 = disconnected

„ 1 = connected

Property ทส าคญท าหนาทในการเปดการเชอมตอกบฐานขอมล

อ.เรวด พพฒนสงเนน

DbConnection class(ตอ)

DbConnection()DbConnectio(string) string : ขอความทใชในการตดตอ

ฐานขอมล

Constructor

Open() เปดการเชอมตอกบฐานขอมลClose() ปดการเชอมตอกบฐานขอมล

Method ทจ าเปน

อ.เรวด พพฒนสงเนน

ตวอยางการเชอมตอดวย OleDbConnection class

//ก ำหนด Connection string string strCon= “Provider = Microsoft.JET.OleDb.4.0;

Data Source=ต ำแหนงไฟลฐำนขอมล” ; User =ชอผใช ; Password = รหสผำน”

//สรำงออบเจกต connOleDbConnection conn As New OleDbConnection();conn.ConnectionString = strCon;conn.Open(); //เปดกำรเชอมตอฐำนขอมล

อ.เรวด พพฒนสงเนน

ตวอยางการเชอมตอดวย sqlConnection class

//ก ำหนด Connection string string strCon= “Data Source=“ชอเซรฟเวอรฐำนขอมลฐำนขอมล” ;Initial catalog=“ชอฐำนขอมล” User =ชอผใช ; Password = รหสผำน; Integrated Security=true”

//สรำงออบเจกต connsqlConnection conn As New sqlConnection();conn.ConnectionString = strCon;conn.Open(); //เปดกำรเชอมตอฐำนขอมล

อ.เรวด พพฒนสงเนน

Connection string (MS SQL Server)

• Standard security

• ตวอยาง

Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;

string strCon = “Data Source=Rewadee;Initial Catalog=Northwind;User Id=sa; Password=1234;”

อ.เรวด พพฒนสงเนน

Connection string (MS SQL Server)

• Trusted Connection

• ตวอยาง

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

string strCon = “Data Source=Rewadee;Initial Catalog=Northwind; Integrated Security=SSPI;”

อ.เรวด พพฒนสงเนน

Connection string (MS SQL Server)

• Connect via an IP address

• ตวอยาง

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

string strCon = “Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=Northwind;User ID=sa;Password=1234;”

***หมายเลขพอรต 1433 เปน default port ของ MS SQL Server

อ.เรวด พพฒนสงเนน

Connection string (MS SQL Server)

• Attach a database file on connect to a local SQL Server Express instance

• ตวอยาง

Server=.\SQLExpress; AttachDbFilename= path of database file; Database=dbname; Trusted_Connection=Yes;

string strCon = “Server=.\SQLExpress; AttachDbFilename = c:\test\mydbfile.mdf; Database=dbname;Trusted_Connection=Yes;”

อ.เรวด พพฒนสงเนน

DbCommand class

CommandText ขอความค าสงSQL หรอ StoreProcedure ทจ าประมวลผล

CommandTimeOut ก าหนดเวลาทรอในขณะท าการประมวลผล ถาครบก าหนดเวลาจะแสดงขอผดพลาด

CommandType ระบชนดของ CommandText ทจะประมวลผล

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

Property ทส าคญ

ท าหนาทก าหนดค าสง SQL หรอ StoreProcedure ทจะประมวลผลในฐานขอมล

อ.เรวด พพฒนสงเนน

OleDbCommand class(ตอ)

DbCommand()

DbCommand(string) string : ค าสง SQL หรอ StoreProcedure

DbCommand(string , DbConnection)

DbConnection : การเชอมตอฐานขอมล

DbCommand(string , DbConnection , DbTransaction)

Constructor

อ.เรวด พพฒนสงเนน

OleDbCommand class

OleDbCommand cmd = New OleDbCommand();

cmd.Connection = conn ;

cmd.CommandText = “Select * From Products”;

cmd.CommandTimeOut = 90;

cmd.CommandType = CommandType.Text;

อ.เรวด พพฒนสงเนน

sqlDbCommand class

sqlDbCommand cmd = New sqlDbCommand();

cmd.Connection = conn ;

cmd.CommandText = “Select * From Products”;

cmd.CommandTimeOut = 90;

cmd.CommandType = CommandType.Text;

อ.เรวด พพฒนสงเนน

DataAdapter class

DbDataAdapter()

DbDataAdapter(OleDbCommand)

DbDataAdapter(string , OleDbConnection)

DbDataAdapter(String , String)

Constructor

ท าหนาทเกบชดค าสงและการเชอมตอฐานขอมลทจะใชในการก าหนดขอมลใหแก DataSet และ update Data Source

อ.เรวด พพฒนสงเนน

bDataAdapter class(ตอ)

InsertCommand ก าหนดค าสง SQL หรอ StroreProcedure ทจะเพมรายการขอมลใหมลงใน Data Source

DeleteCommand ก าหนดค าสง SQL หรอ StroreProcedure ทจะลบรายการขอมลจาก Data Source

UpdateCommand ก าหนดค าสง SQL หรอ StroreProcedure ทจะแกไขรายการขอมลใน Data Source

Property ทจ าเปน

Method ทจ าเปนFill เพม หรอ ปรบปรง(refresh) ขอมลใน DataSet

Update ปรบปรง(refresh) ขอมลใน DataSet

อ.เรวด พพฒนสงเนน

OleDbDataAdapter class

DataSet ds = New DataSet();

OleDbDataAdapter da = New OleDbDataAdapter(“Select * from Products” , conn);

da.Fill(ds , “Products”);

อ.เรวด พพฒนสงเนน

sqlDbDataAdapter class

DataSet ds = New DataSet();

sqlDbDataAdapter da = New sqlDbDataAdapter(“Select * from Products” , conn);

da.Fill(ds , “Products”);

อ.เรวด พพฒนสงเนน

DataReader class

DataReader()

DataReader(OleDbCommand)

DataReader(string , OleDbConnection)

DataReader(String , String)

Constructor

ท าหนาทอานขอมลแบบ Forward-only ของ แถวขอมลจาก Data Source (อานครง 1 เรคคอรด)

อ.เรวด พพฒนสงเนน

DataReader class

FieldCount จ านวนคอลมนในรายการขอมลปจจบน

HasRows บอกวาจ านวนรายการขอมลตงแต 1 รายการขนไป

RecordsAffected จ านวนรายการขอมลทมผลกบค าสงSQL

Property ทจ าเปน

Method ทจ าเปนClose ปดออบเจกตของ OleDbDataReader

Read เลอนออบเจกต OleDbDataReader ไปยงรายการตอไป

อ.เรวด พพฒนสงเนน

OleDbDataReader class

string sql = “Select * from Products where ProductId = 77”;

OleDbCommand com = New OleDbCommand();

OleDbDataReader dr = New OleDbDataReader();

DataTable dt = New DataTable();

อ.เรวด พพฒนสงเนน

sqlDataReader class

string sql = “Select * from Products where ProductId = 77”;

sqlCommand com = New sqlCommand();

sqlDataReader dr = New sqlDataReader();

DataTable dt = New DataTable();

อ.เรวด พพฒนสงเนน

DataSet class

DataSet()

DataSet(string) String : เปนชอชดขอมลภายใน DataSet

DataSet(SerializationInfo , StreamingContext)

Infrastructure

DataSet(SerializationInfo , StreamingContext , Boolean)

Infrastructure

Constructorท าหนาทเกบชดขอมลทไดจากออบเจกต OleDbDataAdapter

อ.เรวด พพฒนสงเนน

DataSet class(ตอ)

Tables ชดของตารางขอมลทบรรจอยใน DataSet

Property ทจ าเปน

Method ทจ าเปนClear เคลยร DataSet โดยลบขอมลออกจากตารางภายใน

DataSet

Clone คดลอกโครงสรางของ DataSet ทงหมด

อ.เรวด พพฒนสงเนน

DataReader vs DataSet• ออบเจกต DataReader และ DataSet ท าหนาทในการเกบ

ขอมลทอานออกมาจากแหลงขอมล

• เชน จากตารางขอมลโดยอาศยชดค าสง SQL หรอ จากแหลงขอมล XML เปนตน

อ.เรวด พพฒนสงเนน

DataReader vs DataSet (ตอ)• ออบเจกต DataReader อานขอมลทละ 1 เรคคอรดออกมา ม

สถานะการเคลอนทไปขางหนาอยางเดยว (Forward-only) สวนใหญเกดจากการรนค าสง SQL ของ ออบเจกต Command

• ตวอยางเชน ควรขอมลออกมาเปนชด โดยไมตองการอานขอมลทงหมดมาเกบไวทหนวยความจ า(RAM) แตตองการอานขอมลมาใชงานทละ 1 เรคคอรด

อ.เรวด พพฒนสงเนน

DataReader vs DataSet (ตอ)• ออบเจกต DataSet อานขอมลทงหมดทควรดวยค าสง SQL มา

เกบไวในหนวยความจ า จากนนจงน าไปใชในรปแบบตาง ๆ ตามตองการ

• ดงนน จงสามารถจดการกบขอมลทเกบอยใน DataSet ไดมากกวาใน DataReader

อ.เรวด พพฒนสงเนน

DataReader vs DataSet (ตอ)• ออบเจกต DataReader เกดจากสถาปตยกรรม Connected

หมายถง มการเชอมตอกบฐานขอมลตลอดเวลา ดงนนเมอใชงานออบเจกต DataReader เสรจแลว ตองควบคมการเปด-ปด ออบเจกต DataReader เองทงหมด เพราะไมสามารถเปดออบเจกต DataReader ไดเกน 1 ครงในเวลาเดยวกน

• ออบเจกต DataSet เกดจากสถาปตยกรรม Disconnectedหมายถง เมอควรขอมลมาเกบไวใน DataSet แลว จะตดการเชอมตอกบแหลงขอมลโดยทนท

top related