ThaiPBL.com

PowerBuilder Library Thailand

อีเมล พิมพ์ PDF

รู้จักกับ transaction

PB นั้นจะใช้ transaction object ในการติดต่อระหว่างตัว application กับ database ซึ่งต้องมีการกำหนดค่าต่างๆก่อนจึงจะสามารถติดต่อกับ database ได้ แต่pb จะมีค่าที่ถูกสร้างขึ้นมาให้แล้วเรียกใช้งานได้เลยโดยที่ไม่ต้องไปทำการสร้างใหม่ก็คือ SQLCA(SQL Communication area) โดยเมื่อเริ่มทำงาน pb จะทำการกำหนด sqlca ให้เป็นแบบ Global variable ใว้ให้เลยทำให้เราสามารถที่จะทำการติดต่อกับ database ได้ตลอดเวลา นอกจากนี้แล้วเรายังสามารถที่จะกำหนด transaction ขึ้นมาใหม่ได้ด้วยโดยทำตามขั้นตอนดังนี้

  •    สร้างตัวแปรชนิด transaction
                    transaction    MyTran
  •         สร้าง transaction object
                    MyTran    = Create Transaction
  •         กำหนดรายละเอียดของ transaction
                    MyTran.DBMS =
                    ฯลฯ
  •         ยกเลิกการใช้งาน Transaction
                    Destroy MyTran
   คราวนี้เรามดูรายละเอียดของค่าต่างๆที่เราต้องกำหนดเพื่อใช้ในการติดต่อกับ databaseกันนะครับ

Property ชนิดข้อมูล ความหมาย Profile Section
DBMS String กำหนดว่าต้องการติดต่อกับ database แบบ ODBC หรือ Native DBMS
Database Name String ชื่อของ Database ที่เราจะติดต่อด้วย Database
UserID String ชื่อของผู้ที่ต้องการติดต่อกับ database  
DBPass String ชื่อ รหัสผ่านของผู้ที่ต้องการติดต่อกับ database Password
Lock String กำหนดการ lock และ isolate สำหรับ DBMS ที่รองรับเรื่องนี้ Isolation Level
LogID String ชื่อของ ผู้ใช้ที่ login ไปยัง Database server Login ID
LogPASS String ชื่อของ รหัสผ่านที่ login ไปยัง Database server Login Password
ServerName String ชื่อของ server ที่ database เก็บอยู่ Server Name
AutoCommit Boolean ทำการ update ข้อมูลทันทีโดยไม่ต้องรอคำสั่ง commit กำหนดค่าเป็น True หรือ False AutoCommit Mode
DBParm String เป็นที่เก็บค่าต่างๆที่กล่าวมาทั้งหมดโดยใช้คอมม่าคั่นระหว่างรายละเอียดต่างๆ  
SQLReturnData String คืนค่าที่ระบุใว้ในการ connect กับ DBMS แต่ละแบบ  
SQLCode Long บอกว่าการ Connect นั้น สำเร็จหรือไม่  
SQLNRows Long คืนค่าของจำนวน row ที่ SQL Statement เพิ่งจะ execute เสร็จ  
SQLDBCode Long คืนค่า error code  
SQLErrTxt String เก็บข้อความ error ในการติดต่อกับ database  

คำสั่งที่เกี่ยวกับจัดการ transaction
Connect    ใช้ในการเชื่อมต่อกับ database
Disconnect ใช้ในการยกเลิกการเชื่อมต่อกับ database
Commit    คือการยืนยันกับ database ว่าข้อมูลทั้งหมดที่เราทำการ update นั้นจะถูกบันทึกลง database แบบถาวร
Rollback    คือการยกเลิกข้อมูลที่ถูก update แต่ยังไม่ได้ถูกบันทึกแบบถาวร
   ในการทำงานจริงๆนั้นเราสามารถเพิ่มประสิทธิภาพให้กับการทำงานแบบ transaction ได้หลายวิธีด้วยกัน

  • จำกัดจำนวน rowโดย user
           โดยการกำหนดเงื่อนไขให้กับข้อมูลในการ retrieve ซึ่งข้อมูลที่จะถูก retrieve จะมรจำนวนลดลงโดยที่ไม่ต้องมีการ retrieve ทั้งหมด
  • ฟังก์ชั่น rowcount()
           ทำการนับจำนวน row ที่ต้องการก่อนเพื่อดูว่า client นั้นสามารถจัดการกับจำนวนข้อมูลดังกล่าวได้หรือไม่
  • Retrieverow Event
           เมื่อมีการ retrieve row เกิดขึ้นจะทำให้ retrieverow event เกิดขึ้นจากจุดนี้เราสามารถเขียนสคริปต์ดักเอาใว้ได้ถ้าหากว่าเกินความสามารถของ client ก็ให้ทำการ
                return 1 เพื่อหยุดการ retrieve
  • Retrieve Only as Need
           จะทำการดึงข้อมูลขึ้นมาบางส่วนก่อนจากนั้นถ้าผู้ใช้มีการเลื่อข้อมูลก็จะทำการดึงข้อมูลชุดถัดไปขึ้นมา
               การใช้ sort order ใน datawindow object จะทำให้ฟังก์ชั่นนี้ถูกยกเลิกไป
  • Cancel Retrieval
          ระหว่างที่มีการ retrieve ข้อมูลอยู่นั้นหากเราเห็นว่ามีข้อมูลมากเกินหรือมีปัญหาเกิดขึ้นเราสามารถที่จะยุติการทำงานได้โดยใช้
           DBCancel()
                 ใช้ return code ให้เป็น 1 ให้กับ event ที่เกี่ยวข้องกับการ retrieve
  • Retrieve Rows To Disk
            ถ้าหากว่ามีข้อมูลที่ถูกจัดส่งมาจาก Server เข้าสู่ client เราสามารถกำหนดให้ ตัว datawindow เก็บข้อมูลลง Haddisk แทนหน่วยความจำ
เป็นอย่างไรบ้างครับ มีความคิดเห็นตรงจุดไหนก็ เมล์มาบอกก็แล้วกัน บทความนี้มาจาก www.soopsawat.com