asp ติดต่อฐานข้อมูล

39
1 ตตตตตตตตต ตตตตตตตตต ตตตตตต ตตตตตต ตตตตตตตตตตตตตตตตตตตตต ตตตตตต Server Object Connection Object Recordset Object

Upload: archibald-richter

Post on 04-Jan-2016

37 views

Category:

Documents


0 download

DESCRIPTION

ASP ติดต่อฐานข้อมูล. รูปแบบการติดต่อกับฐานข้อมูล Server Object Connection Object Recordset Object. 1. Server Object. ปกติการใช้ Server Object จะใช้ในลักษณะการให้บริการเป็นหลัก และนอกจากนั้นยังมีฟังก์ชั่นสำหรับทำหน้าที่พิเศษต่าง ๆ อีกด้วย รูปแบบ Server.property | methode - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ASP  ติดต่อฐานข้อมูล

11

ASP ASP ติ�ดติ�อติ�ดติ�อฐานข้อมู�ลฐานข้อมู�ล

รู�ปแบบการูติ�ดติ�อก�บฐานข้อมู�ล Server Object

Connection Object

Recordset Object

Page 2: ASP  ติดต่อฐานข้อมูล

22

Server ObjectServer Object

ปกติ�การใช้ Server Object จะใช้ในลั�กษณะการให้บร�การเป�น ห้ลั�ก แลัะนอกจากน��นยั�งมี�ฟั�งก�ช้� �นสำ!าห้ร�บทำ!าห้นาทำ��พิ�เศษติ%าง

ๆ อ�กด้วยั

รู�ปแบบ Server.property | methode

โดยมู� Property, Methode ที่��น�าสนใจด�งน�� ScriptTimeout CreateObject HTMLEncode MapPath URLEncode

Page 3: ASP  ติดต่อฐานข้อมูล

33

ScriptTimeout (Property)

ใช้ก!าห้นด้ระยัะเวลัาในการประมีวลัผลัของ Script รู�ปแบบ Server.ScriptTimeout = nSeconds

nSeconds เป�นระยัะเวลัาทำ��มีากทำ��สำ+ด้ในการร�น Script โด้ยัปกติ�จะ ติ��งไวทำ�� 90 ห้น%วยัเป�น ว�นาทำ�

เราสำามีารถก!าห้นด้ระยัะเวลัาทำ��มีากทำ��สำ+ด้ในการร�น Script ได้โด้ยัใช้ คำ!าสำ��งด้�งน��

<%Server.ScriptTimeout = 200%>

ถาคำ+ณติองการทำราบเวลัาทำ��ใช้ในการร�น Script ได้โด้ยัใช้คำ!าสำ��งด้�งน�� <%Timeout =Server.ScriptTimeout %>

Page 4: ASP  ติดต่อฐานข้อมูล

44

HTMLEncode (Method)

ใช้แปลัง String ให้อยั0%ในร0ปแบบ HTML รู�ปแบบ Server.HTMLEncode(String)

เช่�น <%=Server.HTMLEncode("<สำว�สำด้�คำร�บ>")%>

ผลัทำ��ได้คำ1อ&amp;&lt;&#3626;&#3623;&#3633;&#3626;&#3604;&#3637;&#3588;&#3619;&#3633;&#3610;&gt; แติ%ติองด้0

ผลัจาก Source ของ HTML

Page 5: ASP  ติดต่อฐานข้อมูล

55

MapPath (Method)

ใช้ห้าติ!าแห้น%งทำ��แทำจร�งในการเก2บไฟัลั�รู�ปแบบ

Server.MapPath(Path ทำ��อยั0%ของไฟัลั�)

URLEncode   แปลัง String ให้อยั0%ในร0ปแบบทำ��ใช้ก�บ URL ได้

รู�ปแบบ Server.URLEncode(String)

Page 6: ASP  ติดต่อฐานข้อมูล

66

Connection Object Connection Object แนะน!า ADO Object Model ActiveX Data Objects คำ1อ ช้+ด้ของออบเจ2กติ�ทำ��ถ0กน!ามีาใช้ ในการ

ติ�ด้ติ%อก�บ Database Server สำ!าห้ร�บ ASP โด้ยัใช้ ADODB สำรางออบเจ2กติ�ทำ��เก��ยัวของก�บการ ติ�ด้ติ%อแลัะด้3งขอมี0ลั จากฐาน

ขอมี0ลั เพิ1�อมีาใช้งาน โด้ยัมี�ออบเจ2กติ�ติ%าง ๆ ทำ��เก��ยัวก�บ ADO ด้�งน��1. Command Object

เป�นออบเจ2กติ�คำ!าสำ��ง ทำ��ถ0กสำ%งไปเพิ1�อเอ2กซ์�คำ�วติ� ให้ได้เร2คำคำอร�ด้เซ์2ติ กลั�บมีาเป�นผลัลั�พิธ์� แลัะยั�งมี�คำวามีสำามีารถในการก!าห้นด้

พิารามี�เติอร� ติ%าง ๆ ไปก�บการสำ%งคำ!าสำ��งปกติ�ได้2. Connection Object

เป�นออบเจ2กติ� ทำ��ถ0กสำรางข3�นเพิ1�อเช้1�อมีติ%อก�บฐานขอมี0ลั3. Recordset Object

เป�นออบเจ2กติ� ทำ��ได้มีาจาก การสำ%งคำ!าสำ��งเพิ1�อให้ได้เร2คำคำอร�ด้เซ์2ติ เป�นผลัลั�พิธ์�กลั�บมีา

Page 7: ASP  ติดต่อฐานข้อมูล

77

การูติ�ดติ�อก�บฐานข้อมู�ล โดยผ่�านODBC,DSNLess และ OLEDB

1.การูติ�ดติ�อผ่�าน ODBC

ก%อนจะติ�ด้ติ%อผ%าน ODBC คำ+ณติองทำ!าการ Set Dsn ก%อน พิ0ด้ ง%ายั ๆ ก2คำ1อ การ Set Driver เพิ1�อให้ร0 จ�กก�บฐานขอมี0ลัน��นเอง

ห้ลั�งจาก Set Dsn เร�ยับรอยัแลัว ในทำ��น��ติ� �งช้1�อ Dsn เป�นDatabase

ข้��นติ�อไปก$ติ�ดติ�อก�บฐานข้อมู�ล รู�ปแบบการูติ�ดติ�อ Set Conn = Server.CreateObject("ADODB.Connection")

Conn.Open "Dsn-name" ,"[userName]" , "[password]"

Page 8: ASP  ติดต่อฐานข้อมูล

88

เมู%�อConn : เป�นการสำรางออบเจ2กติ�ให้มี%ช้1�อว%า ConnDsn-name : คำ1อช้1�อ Dsn userName : ช้1�อผ0มี�สำ�ทำธ์�ใช้ฐานขอมี0ลั ถาไมี%มี�ใสำ% "" (ว%าง) password : รห้�สำผ%านการใช้ฐานขอมี0ลัของผ0ใช้userName ถาไมี%มี�ใสำ "" (ว%าง)

Page 9: ASP  ติดต่อฐานข้อมูล

99

เมู%�อน!ามูาใช่ก�บ Dsn ที่��สรูางข้��นมูาจะได

Set Conn = Server.CreateObject("ADODB.Connection")Conn.Open "Dsn-name" ,"" , ""

สำ!าห้ร�บการติ�ด้ติ%อก�บฐานขอมี0ลัก2เป�นอ�นเสำร2จ สำ%วนเร1�องการ ด้3งขอมี0ลัมีาให้ เราจะได้เร�ยันร0 ในห้�วขอติ%อไป

เพิ่��มูเติ�มู ขอเสำ�ยัของว�ธ์�น��คำ1อ Server ติอง Support ก�บการ เช้1�อมีฐานขอมี0ลัแบบ ODBC แลัะ เราติองเสำ�ยัเวลัาไป Set คำ%า

ใน Dsn Server

Page 10: ASP  ติดต่อฐานข้อมูล

1010

2. การูติ�ดติ�อผ่�าน DsnLess

ว�ธ์�น��จะแติกติ%างจากว�ธ์�ผ%าน ODBC คำ1อไมี%ติอง ก!าห้นด้ DSN ทำ�� ODBC แติ%เรา ก!าห้นด้ลังในติ�ว asp

script เลัยั

สำ!าห้ร�บการแกไขการ Set แบบ DsnLess ว�ธ์�น��คำ1อ การเข�ยันไฟัลั�สำ!าห้ร�บการ Include

Page 11: ASP  ติดต่อฐานข้อมูล

1111

รู�ปแบบการูติ�ดติ�อ Set Conn = Server.CreatteObject("ADODB.Connection")

Conn.Open "Driver={database_driver} ; DBQ = drive:\path[\database_name]"

database_driver : Driver สำ!าห้ร�บฐานขอมี0ลั ทำ��จะใช้ มี�ห้ลัายั drive เช้%น        FoxPro ก!าห้นด้ด้�งน�� Driver ={Microsoft FoxPro Driver(*.dbf)};DBQ=drive:\path ทำ��เก2บไฟัลั� .dbf         Access ก!าห้นด้ด้�งน�� Driver ={Microsoft Access Driver(*.mdb)};DBQ=drive:\path\ช้1�อฐานขอมี0ลั.mdbdrive:\path : ช้1�อ Drive แลัะ Directory ทำ��เก2บฐานขอมี0ลัdatabase_name : ช้1�อฐานขอมี0ลั ยักเวนถาเป�น ฐานขอมี0ลัติระก0ลัFoxBase,FoxPro, dBase ไมี%ติองระบ+

Page 12: ASP  ติดต่อฐานข้อมูล

1212

ติ�วอยั%าง Set Conn = Server.CreatteObject("ADODB.Connection")

Conn.Open "Driver ={Microsoft Access Driver(*.mdb)};DBQ=C:\Inetpub\wwwroot\db\database.mdb"

จากติ�วอย�างที่��ผ่�านมูาจะเห็$นว�าสามูารูถใช่ไดก�บ path ที่��เป*น Drive เที่�าน��น ถาห็ากใช่บน Server จะเก�ดป+ญห็าเรู%�องไมู�สามูารูถติ�ดติ�อก�บฐานข้อมู�ลได

เรูาสามูารูถแกป+ญห็าน��ไดโดย ก!าห็นดเป*น Server.MapPath

ติ�วอย�าง Set Conn=Server.Createobject("ADODB.Connection")

Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db/database.mdb"),"" , ""

ห้มีายัเห้ติ+ ,"","" คำวามีห้มีายัคำ1อ ,"[username]","[password]" คำ1อUsername แลัะ รห้�สำผ%านฐานขอมี0ลัในกรณ�ทำ��มี� ถาไมี%มี�ให้ปลั%อยัว%างเอาใว

Page 13: ASP  ติดต่อฐานข้อมูล

1313

เพิ่��มูเติ�มูอ�กน�ดห็น-�ง Method ที่��น�าสนใจ ส!าห็รู�บConnection .Open : เป�นการเป7ด้การเช้1�อติ%อก�บ DSN ช้1�อ

mydsn ทำ��ก!าห้นด้ไวทำ�� ODBC.Close : เป�นการเลั�กการติ�ด้ติ%อก�บ DSN.Execute(strSQL) : เป�นการติ�ด้ติ%อเพิ1�อประมีวลั

ผลัขอมี0ลั จากฐานขอมี0ลั โด้ยัใช้สำติร�งทำ��เก2บคำ!าสำ��งSQL ทำ��ติองการกระทำ!าก�บฐานขอมี0ลัเพิ1�อให้ได้ขอมี0ลัทำ��ติองการ

Page 14: ASP  ติดต่อฐานข้อมูล

1414

3. การูติ�ดติ�อผ่�าน OLEDB การติ�ด้ติ%อฐานขอมี0ลัในแบบสำ+ด้ทำายัทำ��จะกลั%าวถ3งคำ1อแบบ

OLEDB ห้ร1อ (Object Link Embedding Database) OLEDB จะมี�โพิรไวเด้อร� (provider) ทำ!าห้นาทำ��คำลัายัก�บ

ได้ร�เวอร�ในระบบการติ�ด้ติ%อฐานขอมี0ลั แบบ DNS แลัะDNSLess

แติ%โพิรไวเด้อร�จะมี�ลั�กษณะพิ�เศษกว%า คำ1อมี�การติ�ด้ติ%อก�บฐานขอมี0ลัทำ��เร2วกว%าแลัะรองร�บการใช้ฐานขอมี0ลัแบบสำ�มีพิ�นธ์� (Relational Database) เป�นติน

Page 15: ASP  ติดต่อฐานข้อมูล

1515

การูติ�อติ�อฐานข้อมู�ลในรู�ปแบบข้อง OLEDB จะมู�รู�ปแบบด�งน��

Set strCon = Server.CreateObject("ADODB.Connection")strCon.Open "PROVIDER=ช้1�อโพิรไวเด้อร�; DATA SOURCE=ช้1�อไฟัลั�ห้ร1อเซ์�ร�ฟัเวอร�; INITIAL CATALOG =ช้1�อฐานขอมี0ลั;USER ID=ช้1�อผ0ใช้;PASSWORD=รห้�สำผ%าน"

เช่�นการูติ�ดติ�อก�บฐานข้อมู�ลที่��ที่��เก$บอย��ใน Drive Set Conn= Server.CreateObject("ADODB.Connection")Conn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\database.mdb"

Page 16: ASP  ติดต่อฐานข้อมูล

1616

ห็รู%อถาคุ/ณติองการูเรู�ยกไฟล2ที่��อย��ใน path ข้องServer

Set Conn = Server.CreateObject("ADODB.Connection")Conn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/database.mdb")

Page 17: ASP  ติดต่อฐานข้อมูล

1717

Recordset Object

เป�นการด้3งขอมี0ลัจากฐานขอมี0ลัมีาแสำด้งโด้ยัใช้Recordset เพิ1�อคำวบคำ+มีสำถานะการแสำด้งผลัติ%าง ๆ

ก�อนที่��จะศึ-กษาที่!าคุวามูเข้าใจเก��ยวก�บ การูเรู�ยกใช่ ข้อมู�ลในติารูาง โดยใช่ SQL Statement คำ1อ

การน!าคำ!าสำ��ง Sql มีาเพิ1�อทำ!าการเลั1อกติารางห้ร1อเลั1อกขอมี0ลัในติาราง

Page 18: ASP  ติดต่อฐานข้อมูล

1818

ติ�วอย�าง Sql="Select * From member"

' เป�นการก!าห้นด้ Object Sql เพิ1�อเลั1อกติาราง member รู�ปแบบ Set RS = Server.CreateObject("ADODB.Recordset")

RS.Open sql, Conn , 1 , 3

เมู%�อRS : เป�นติ�วแปร Recordset ทำ��มีาร�บขอมี0ลัจากฐานขอมี0ลัsql : เป�นสำติร�งทำ��เก2บคำ!าสำ��ง SQL ทำ��ติองการกระทำ!าก�บฐาน

ขอมี0ลัเพิ1�อให้ได้ขอมี0ลัทำ��ติองการConn : เป�นติ�วแปรออบเจ2กติ� Connection

Page 19: ASP  ติดต่อฐานข้อมูล

19

คุ!าส��งrs.Open Source, Connection, CursorType, LockType, Option

Source คำ1อแห้ลั%งทำ��มีาของขอมี0ลัสำ%วนมีากจะเป�นคำ!าสำ��ง SQLConnection คำ1อการติ�ด้ติ%อฐานขอมี0ลั ซ์3�งปกติ�จะอยั0%ในร0ปแบบของ Object

ConnectionCursorType น��นจะห้มีายัถ3งช้น�ด้การเลั1�อนของ pointer

LockType น��นจะเป�นช้น�ด้การ Lock ของ Cursor ซ์3�งมี�คำวามีสำ�มีพิ�นธ์�โด้ยัติรงก�บCursorType

CursorType adOpenForwardOnly มี�คำ%า CursorType เทำ%าก�บ 0(ถาเราไมี%ก!าห้นด้มี�นก2

จะถ1อเป�น 0 คำ1อคำ%าติ��งติน ) adOpenKeySet มี�คำ%า CursorType เทำ%าก�บ 1 adOpenDynamic มี�คำ%า CursorType เทำ%าก�บ 2 adOpenStatic มี�คำ%า CursorType เทำ%าก�บ 3

ติ�วอย�าง RS.Open sql, Conn , 1 , 3

Page 20: ASP  ติดต่อฐานข้อมูล

20

CursorType ติ%อ adOpenForwardOnly

การก!าห้นด้ CursorType เป�นคำ%าน�� ( คำ%า 0 ) จะเป�นการให้ pointer เลั1�อนขอมี0ลัไป ขางห้นาเพิ�ยังอยั%างเด้�ยัว ไมี%สำามีารถยัอนห้ลั�งได้ กลั%าวคำ1อขอมี0ลัทำ��แสำด้งจะเร��มีติน

จากขอมี0ลัทำ�� 1 แลัวจ3งไปขอมี0ลัทำ�� 2 จะเร��มีจาก 2 แลัวยัอนมีา 1 ไมี%ได้ การเลั1�อน pointer ในลั�กษณะน��จะทำ!าได้เร2วแลัะไมี%สำ��นเปลั1องห้น%วยัคำวามีจ!าของ

Server มีากน�กเน1�องจากไมี%มี�การถ%ายัโอนขอมี0ลัมีาเก2บไวในห้น%วยัคำวามีจ!า (RAM) ด้�งน��ว�ธ์�การน��เห้มีาะสำ!าห้ร�บการแสำด้งขอมี0ลัเพิ�ยังอยั%างเด้�ยัว

adOpenKeySet การก!าห้นด้เลั1�อน pointer แบบน��จะเป�นการก!าห้นด้ให้ pointer เลั1�อนไปมีาได้อยั%าง

อ�สำระทำ��งไปขางห้นา แลัะไปขางห้ลั�ง ห้ร1อจะเลั1�อนจากห้ลั�งก%อน แลัวคำ%อยัมีาห้นาก2ได้ แลัวแติ%ว%าเราจะก!าห้นด้ให้ pointer ไปอยั0%ทำ��ไห้น เมี1�อใด้ก2ติามีทำ��มี�ผ0ใช้งานคำนอ1�นเขา

มีาเปลั��ยันแปลังขอมี0ลัในฐานขอมี0ลัเราก2จะเห้2นการเปลั��ยันแปลังน��นด้วยั แติ%ถาเป�นการเพิ��มีห้ร1อลัด้ขอมี0ลัแลัว เราจะไมี%เห้2นการเปลั��ยันแปลังน��นสำาเห้ติ+เพิราะ

ติ!าแห้น%งของ pointer ได้ถ0กก!าห้นด้ไวติ��งแติ%ติอนติ�ด้ติ%อฐานขอมี0ลัทำ�แรกแลัว ด้�งน��นถาเราอยัากเห้2นการเปลั��ยันแปลังเราติองใช้ Method Requery เพิ1�อเร�ยักด้0

ขอมี0ลัให้มี%อ�กคำร��งห้น3�ง

Page 21: ASP  ติดต่อฐานข้อมูล

21

CursorType ติ%อ adOpenDynamic

การก!าห้นด้เลั1�อน pointer แบบน��จะเป�นการก!าห้นด้ให้ pointer เลั1�อนไปมีาได้อยั%างอ�สำระ ทำ��งไปขางห้นา แลัะไปขางห้ลั�ง ห้ร1อจะเลั1�อนจากห้ลั�งก%อน แลัวคำ%อยัมีาห้นาก2ได้ แลัวแติ%ว%า เราจะก!าห้นด้ให้ pointer ไปอยั0%ทำ��ไห้น เมี1�อใด้ก2ติามีทำ��มี�ผ0ใช้งานคำนอ1�นเขามีาเปลั��ยันแปลัง

ขอมี0ลัในฐานขอมี0ลัเราก2จะเห้2นการเปลั��ยันแปลังน��นด้วยัแลัะยั��งไปกว%าน��นเรายั�งสำามีารถมีองเห้2นขอมี0ลัป�จจ+บ�นได้ติลัอด้เวลัาไมี%ว%าขอมี0ลัจะเพิ��มี

ห้ร1อลัด้ลัง ทำ��กระทำ!าโด้ยัผ0ใช้รายัอ1�นก2ติามี

สำาเห้ติ+ก2เพิราะว%าการเลั1�อ point แบบน��จะมี�การถ%ายัโอนขอมี0ลัไปไวทำ��ห้น%วยัคำวามีจ!าก%อน แลัะมี�การอ�พิเด้ทำขอมี0ลัให้มี%เร1�อยัๆในห้น%วยัคำวามีจ!าเสำมีอ แลัวจ3งจะแสำด้งให้เราด้0อ�กทำ�

แติ%ก2มี�ขอเสำ�ยัติรงทำ��สำ��นเปลั1องห้น%วยัคำวามีจ!ามีากน��นเอง ซ์3�งการก!าห้นด้ CursorType ในลั�กษณะน��เห้มีาะก�บกรณ�ทำ��ติองอ�พิเด้ทำขอมี0ลับ%อยัๆ

adOpenStatic การก!าห้นด้เลั1�อน pointer แบบน��จะเป�นในลั�กษณะเด้�ยัวก�นก�บแบบ adOpenDynamic

เพิราะมี�การถ%ายัโอนขอมี0ลัเขาห้%วยัคำวามีจ!า แติ%ก2มี�จ+ด้ทำ��แติกติ%างก�นอยั%างสำ��นเช้�งก2คำ1อ การก!าห้นด้ในแบบน��จะไมี%มี�การอ�พิเด้ทำขอมี0ลั

ให้มี%ๆ ลังในห้น%วยัคำวามีจ!าเลัยั ด้�งน��นขอมี0ลัทำ��ได้ก2จะเป�นขอมี0ลัเด้�มีๆ ทำ��ไมี% มี�การเปลั��ยันแป ลังใด้ๆ อยั%างไรก2ติามีถาเราติองการด้0ขอมี0ลัให้มี% เราก2ใช้ Method Reqyery เช้%นเด้�ยัว ก�บแบบ adOpenKeySet

Page 22: ASP  ติดต่อฐานข้อมูล

22

LockType

adLockReadOnly มี�คำ%า LockType เทำ%าก�บ 1 (ถาเราไมี%ก!าห้นด้มี�นก2จะ ถ1อเป�น 1 คำ1อคำ%าติ��งติน )

adLockPessimistic มี�คำ%า LockType เทำ%าก�บ 2 adLockOptimistic มี�คำ%า LockType เทำ%าก�บ 3 adLockBatchOptimistic มี�คำ%า LockType เทำ%าก�บ 4

adLockReadOnly เมี1�อก!าห้นด้ว�ธ์�การปกป8องขอมี0ลัในร0ปแบบน��แลัว ผ0ใช้จะสำามีารถอ%านได้

เพิ�ยังอยั%างเด้�ยัว ไมี%สำามีารถเพิ��มี ลับ ห้ร1อแกไขขอมี0ลัใด้ๆได้

adLockPessimistic เมี1�อก!าห้นด้ว�ธ์�การปกป8องขอมี0ลัในร0ปแบบน��แลัวผ0ใช้จะสำามีารถ

เปลั��ยันแปลังแกไขขอมี0ลัได้ แติ%จะทำ!าได้คำลั��งลัะเพิ�ยังคำนเด้�ยัวเทำ%าน��น คำ1อไมี% สำามีรถเปลั��ยันแปลังได้พิรอมีๆก�น

Page 23: ASP  ติดต่อฐานข้อมูล

23

LockType ติ�อ adLockOptimistic

เมี1�อก!าห้นด้ว�ธ์�การปกป8องขอมี0ลัในร0ปแบบน��แลัวผ0ใช้จะสำามีารถ เปลั��ยันแปลังแกไขขอมี0ลัได้ โด้ยัสำามีารถกระทำ!าพิรอมีก�นได้ห้ลัายัๆ

คำน แติ%การแกไขจะเป�นไปทำ�ลัะ 1 รายัการ ห้ร1อ 1 Record เทำ%าน��น ถา มี�การเปลั��ยันแปลังขอมี0ลัทำ�� 1 แลัว pointer เลั1�อนไปติ!าแห้น%งทำ�� 2

เพิ1�อแกไขติ%อไป ADO ก2จะเร�ยัก Method Update ข3�นมีาให้เองเพิ1�อจ�ด้เก2บขอมี0ลัทำ��แกไขลังฐานขอมี0ลัก%อน

adLockBatchOptimistic ว�ธ์�การปกป8องขอมี0ลัในร0ปแบบน��จะคำลัายัก�บว�ธ์� adLockOptimistic

แติ%ว%าว�ธ์�น��จะสำามีารถแกไขขอมี0ลัได้ทำ�ลัะมีากๆ จ3งเห้มีาะทำ��จะใช้งานในกรณ�บางอยั%างเช้%น

ติองการแกไขรห้�สำสำมีาช้�กทำ��ข3�นตินด้วยั A ก2สำามีารถเข�ยันโปรแกรมี วนลั0ปแกไขในฐานขอมี0ลัก%อน จากน��นจ3งทำ!าการอ�พิเด้ทำลังฐานขอมี0ลัทำ�

เด้�ยัวเลัยั

Page 24: ASP  ติดต่อฐานข้อมูล

2424

ติ�วอย�าง Set Conn=Server.Createobject("ADODB.Connection")

Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db/member.mdb"),"" , ""Sql="Select * Form member" Set RS = Server.CreateObject("ADODB.Recordset")RS.Open sql, Conn , 1 , 3

ว�ธี�น��สามูารูถเรู�ยกใช่ Property และ Method ไดเพิ่��มูข้-�นจากว�ธี� Dynamic คุ%อ

RS.Open : เป�นออบเจ2กติ�สำ!าห้ร�บ การเป7ด้ Recordset RS.RecordCount : บอกจ!านวน record ทำ��งห้มีด้RS.PageSize : ใช้ก!าห้นด้ว%าแติ%ลัะห้นาจะให้มี�ก��รายัการ ในการแสำด้งผลัRS.PageCount : น�บจ!านวนห้นาทำ��งห้มีด้ ทำ��ได้จากการก!าห้นด้ขนาด้ของห้นาRS.AbsolutePage : ใช้อางอ�งไปยั�งห้นาทำ��ติองการ

Page 25: ASP  ติดต่อฐานข้อมูล

2525

ช้1�อ ฐานขอมี0ลั \db\member.mdb ช้1�อติาราง member

ช่%�อ Field- ID- Name- Surname- Nickname

- User

- Password

- Type

Page 26: ASP  ติดต่อฐานข้อมูล

2626

ติ�วอย�าง sam10-1.asp<%Set Conn=Server.Createobject("ADODB.Connection")

Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db/member.mdb"),"" , ""'ห้ร1อจะใช้เป�น Conn.Open "Dsn-name","",""sql ="Select * From member"Set Rs=Server.CreateObject("ADODB.Recordset")Rs.Open sql, Conn, 1,3

If Rs.EOF Then%>ไมี%มี�ขอมี0ลัในติาราง !

<%Else' น�บรายัการทำ��งห้มีด้TotalRecord = Rs.RecordCount

' ติองการให้แสำด้งห้นาลัะ 10 รายัการRs.PageSize = 10

' จ!านวนห้นาทำ��งห้มีด้ทำ��จะเก�ด้ข3�นTotalPage = Rs.PageCount

'เลั1�อนรายัการไปห้นาทำ��ติองการPageNo = 1Rs.AbsolutePage =PageNo %>

<table border="1"><tr bgcolor="Silver"> <td>รห้�สำน�กศ3กษา</td><td>ช้1�อ</td><td>นามีสำก+ลั</td><td>ช้1�อเลั%น</td></tr>

Sam10-1.asp

Page 27: ASP  ติดต่อฐานข้อมูล

2727

ติ�วอย�าง sam10-1.asp (ติ�อ)<% row = 1

While Not Rs.EOF and row<=Rs.PageSize%><tr><td><%= Rs("ID")%></td><td><%= Rs("Name")%></td><td><%= Rs(“SurName")%></td><td><%= Rs("Nickname")%></td></tr><% Rs.MoveNext

row = row +1 Wend

Rs.CloseConn.CloseEnd If%><tr><td colspan="4"> ห้นาทำ�� :<b> <%=PageNo%> </b> ของทำ��งห้มีด้<b><%= TotalPage %></b>

ห้นา <br> รายัการทำ��งห้มีด้ :<b><%= TotalRecord %></b> </td>

</tr></table>

Page 28: ASP  ติดต่อฐานข้อมูล

2828

Out put

Page 29: ASP  ติดต่อฐานข้อมูล

2929

รู�ปแบบการูติ�ดติ�อข้อมู�ลแบบ Dynamic Recordset Static Recordset

Page 30: ASP  ติดต่อฐานข้อมูล

3030

รู�ปแบบการูติ�ดติ�อข้อมู�ลแบบ Dynamic Recordset

เป�นการด้3งขอมี0ลัจากฐานขอมี0ลัมีาแสำด้งโด้ยัไมี%ได้ใช้Recordset เพิ1�อคำวบคำ+มีสำถานะการแสำด้งผลัติ%าง

รู�ปแบบ Set RS = Conn.Execute(sql) เมู%�อ

RS : เป�นติ�วแปร Recordset ทำ��มีาร�บขอมี0ลัจากConn.Execute(sql) sql : เป�นสำติร�งทำ��เก2บคำ!าสำ��ง SQL ทำ��ติองการกระทำ!าก�บฐานขอมี0ลัเพิ1�อให้ได้ขอมี0ลัทำ��ติองการ

Page 31: ASP  ติดต่อฐานข้อมูล

3131

ติ�วอยั%าง Set Conn=Server.Createobject("ADODB.Connection")Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db/member.mdb"),"" , ""Sql="Select * from Table"Set RS = Conn.Execute(sql)

Page 32: ASP  ติดต่อฐานข้อมูล

3232

สำามีารถเร�ยักใช้ Property แลัะMethod ได้ด้�งน�� RS.Close : เป�นออบเจ2กติ�สำ!าห้ร�บ การป7ด้

Recordset RS.MoveNext : เป�นออบเจ2กติ�สำ!าห้ร�บ การเลั1�อน Record ไป 1 Record RS.EOF : เป�นออบเจ2กติ�ติรวจสำอบ End of File RS.BOF : เป�นออบเจ2กติ�ติรวจสำอบ Begin of File RS.Fields.Count : บอกจ!านวน field RS.Fields.name : บอกช้1�อ field RS.Fields.Items("field") : ระบ+ช้1�อ filed RS.Fields.Items("field").value : ระบ+ช้1�อ filed แลัะแสำด้งคำ%าใน field น��นออกมีา

Page 33: ASP  ติดต่อฐานข้อมูล

3333

ติ�วอย�าง ช่%�อติารูาง member

ช่%�อ Filed- ID- Name- Surname- Nickname

Page 34: ASP  ติดต่อฐานข้อมูล

3434

ติ�วอย�าง Sam10-2.asp<%

Set Conn=Server.Createobject("ADODB.Connection")Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("db/member.mdb"),"" , ""' ห้ร1อจะใช้เป�น Conn.Open "Dsn-name","",""Set Rs = Conn.Execute("member")' อาจจะใช้เป�น' Sql="Select * From member"' Set Rs = Conn.Execute("Sql")

If Rs.EOF Then%>

ไมี%มี�ขอมี0ลัในติาราง !<%Else%><table border="1"><tr bgcolor="Silver"><td>รห้�สำน�กศ3กษา</td><td>ช้1�อ</td><td>นามีสำก+ลั</td><td>ช้1�อเลั%น</td>

Page 35: ASP  ติดต่อฐานข้อมูล

3535

ติ�วอย�าง Sam10-2.asp (ติ�อ) </tr>

<% While Not Rs.EOF%><tr><td><%= Rs("Id")%></td><td><%= Rs("name")%></td><td><%= Rs("Surname")%></td><td><%= Rs("Nickname")%></td></tr><% Rs.MoveNextWendRs.CloseConn.CloseEnd If%></table>

Page 36: ASP  ติดต่อฐานข้อมูล

3636

Out Put

Page 37: ASP  ติดต่อฐานข้อมูล

37

การูที่!า login Form<HTML><BODY>ฟัอร�มี Login<FORM METHOD=POST ACTION=“chk_login.asp">User:<INPUT TYPE="text" NAME="User" size="15"><BR>Password:<INPUT TYPE="Password" NAME="Password"

size="15"><BR><INPUT TYPE="submit" Value="Login"><INPUT TYPE="reset" Value="Cancel"></FORM></BODY></HTML>

LoginForm.asp

Page 38: ASP  ติดต่อฐานข้อมูล

38

ไฟล2 chk_login.asp<% Set Conn=Server.Createobject("ADODB.Connection") Conn.Open "DRIVER=Microsoft Access Driver

(*.mdb);DBQ=" & Server.MapPath("db/member.mdb"),"" , ""

‘ห้ร1อจะใช้ Conn.Open "member","","" sql ="Select * From member where user

='"&Request.Form("user")&"' and Password='"&Request.Form("Password")&"'"

Set Rs = Conn.Execute(sql)If Rs.EOF Then%>ไมี%พิบขอมี0ลั<%Else%> ยั�นด้�ติอนร�บ <Br> คำ+ณ <%= Rs("Name")%>&nbsp; <%= Rs("SurName")%> ‘ อาจจะเร�ยักไฟัลั�อ1�นๆได้ ห้ลั�ง login สำ!าเร2จ ‘ Response.redirect ”mainmenu.asp”<%end ifRs.CloseConn.Close%>

Page 39: ASP  ติดต่อฐานข้อมูล

3939

แบบฝึ8กห็�ดID Name Surname Nickname

มี�ทำ��งห้มีด้ 39 รายัการไปห้นาทำ�� 1 2 3 4 5

•น!าขอมี0ลัจากฐานขอมี0ลัออกมีาแสำด้ง•แสำด้งแติ%ลัะเรคำอร�ด้ให้สำลั�บสำ�บรรทำ�ด้•โด้ยัให้สำามีารถลั��งคำ�ไปห้นาติ%างๆได้ด้วยั•โด้ยัแสำด้งขอมี0ลัห้นาลัะ 8 เรคำอร�ด้