วิธีทำฉันดึงข้อมูล?

หลังจากที่คุณเปิดแหล่งข้อมูล เซสชัน และวัตถุ rowset คุณสามารถดึงข้อมูล ขึ้นอยู่กับชนิดของการเข้าถึงที่คุณกำลังใช้ คุณอาจจำเป็นต้องผูกคอลัมน์ การดึงข้อมูล ทำตามขั้นตอนเหล่านี้:

  1. เปิด rowset การใช้เหมาะสมคำสั่งเปิด?

  2. ถ้าคุณกำลังใช้CManualAccessorผูกคอลัมน์ผลลัพธ์ถ้าคุณยังไม่ได้ทำ เพื่อผูกคอลัมน์ โทรGetColumnInfoแล้วสร้างตัวเข้าถึง ด้วยการผูก ตามที่แสดงที่นี่:
     / / จาก CDBTreeView::OnQueryEdit DBViewer ตัวอย่าง
    / / รับข้อมูลคอลัมน์
    ULONG ulColumnsnbsp      = 0
    DBCOLUMNINFO * pColumnInfo = NULL
    LPOLESTR pStrings = NULL
    ถ้า (อาร์เอสGetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) ! = S_OK)
    AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND * pBind =ใหม่ MYBIND [ulColumns];
    อาร์เอสCreateAccessor (sizeof(MYBIND)*ulColumns) ulColumns และ pBind [0],
    สำหรับ (ULONG l = 0; l < ulColumns; l ++)
    อาร์เอสAddBindEntry (l + 1, DBTYPE_STR, sizeof (TCHAR) * 40 และ pBind [l] .szValue, NULL และ pBind[l].dwStatus)
    อาร์เอสBind()
    
  3. เขียนวนในขณะที่การเรียกใช้ข้อมูล ในการวนรอบ เรียกMoveNextเพื่อเลื่อนเคอร์เซอร์ และทดสอบค่าส่งกลับจากS_OKดังที่แสดงในตัวอย่างดังต่อไปนี้:
    ในขณะที่ (อาร์เอสMoveNext() == S_OK)
    {
     nbsp / / เพิ่มรหัสเพื่อดึงข้อมูลที่นี่
       / / ถ้าคุณไม่ได้ใช้ตัวเข้าถึง auto เรียกอาร์เอสGetData()
    }(&N)
    
  4. ภายในลูปในขณะคุณสามารถดึงข้อมูลตามการชนิดการเข้าถึงของคุณ?
    • ถ้าคุณใช้คลาสCAccessorคุณควรมีระเบียนผู้ใช้ที่ประกอบด้วยข้อมูลสมาชิก คุณสามารถเข้าถึงข้อมูลของคุณโดยใช้ข้อมูลสมาชิกเหล่านั้น ตามที่แสดงที่นี่:
      ในขณะที่ (อาร์เอสMoveNext() == S_OK)
      {
       nbsp / / ใช้ข้อมูลสมาชิกโดยตรง ในกรณีนี้ m_nFooID
         / / ถูกประกาศในระเบียนผู้ใช้ซึ่งได้มาจาก
         / / CAccessor
         wsprintf ("%d", rs.m_nFooID); 
      }(&N)
      
    • ถ้าคุณใช้คลาสCDynamicAccessorหรือCDynamicParameterAccessorคุณสามารถดึงข้อมูล โดยใช้การเข้าถึงฟังก์ชันGetValueและGetColumnตามที่แสดงในรหัสต่อไปนี้ ถ้าคุณต้องการกำหนดชนิดของข้อมูลที่คุณกำลังใช้ ใช้GetType?
      ในขณะที่ (อาร์เอสMoveNext() == S_OK)
      {
       nbsp / / ใช้ฟังก์ชันการเข้าถึงแบบไดนามิกเพื่อรับของคุณ
         / / ข้อมูล
      
      ULONG ulColumns =อาร์เอสGetColumnCount()
         สำหรับ (ULONG ฉัน = 0 ฉัน < ulColumns; i ++)
         {
           อาร์เอสGetValue(i)
         }
      }
      
    • ถ้าคุณใช้CManualAccessorคุณต้องระบุสมาชิกข้อมูลของคุณเอง ผูกตัวเอง และเข้าถึงได้โดยตรง ตามที่แสดงที่นี่:
      ในขณะที่ (อาร์เอสMoveNext() == S_OK)
      {
       nbsp / / สมาชิกของข้อมูลคุณระบุไว้ในการเรียกใช้
         / / AddBindEntry
      
      wsprintf ("%s", szFoo);
      }(&N)
      

Index