Nasıl veri getirmek?

Veri kaynağında oturum ve satır kümesi nesneleri açtıktan sonra veri getirmek. Kullandığınız erişeni türüne bağlı olarak, sütun bağlama gerekebilir. Veri getirmek için aşağıdaki adımları izleyin.:

  1. Uygun kullanarak satır kümesi açık Açık buyurmak.

  2. Eğer CManualAccessorkullanıyorsanız, zaten yapmadıysanız, çıktı sütunları bağlama. Sütun bağlama için GetColumnInfoçağrı, ardından bir erişimci bağlama ile aşağıda gösterildiği gibi oluşturmak:
     / / DBViewer örnek CDBTreeView::OnQueryEdit
    / / Sütun bilgileri alın
    ulong ulColumnsnbsp;      = 0;
    DBCOLUMNINFO * pColumnInfo = null;
    lpolestr pStrings = null;
    Eğer (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings)! = s_ok)
    AfxThrowOLEDBException (rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND * pBind = yeni MYBIND [ulColumns];
    RS.CreateAccessor (ulColumns & pBind [0], sizeof(MYBIND)*ulColumns);
    için (ulong l = 0; l < ulColumns; l ++)
    RS.AddBindEntry (m + 1, dbtype_str, sizeof (tchar) * 40 & pBind [l] .szvalue, null & pBind[l].dwStatus);
    RS.Bind()
    
  3. Verileri almak amacıyla bir süre döngü yazmak. Döngü, aşağıdaki örnekte gösterildiği gibi imleci ilerletmek ve karşı s_ok, döndürülen değeri sınamak için MoveNext çağrısı:
    (rs.Move&Next() == s_ok)
    {
     nbsp; / / Burada veri getirmek için kod Ekle
       / / Auto erişenine kullanmıyorsanız, rs çağrı.GetData()
    }
    
  4. While döngüsü, erişeni türünüze göre veri getirmek.
    • CAccessor sınıfı kullanırsanız, veri üyeleri içeren bir kullanıcı kayıt olmalıdır. Sen-ebilmek giriş verilerinizi kullanarak bu veri üyeleri aşağıda gösterildiği gibi:
      (rs.Move&Next() == s_ok)
      {
       nbsp; / / Veri üyeleri doğrudan kullanın. Bu durumda, m_nFooID
         / / bir kullanıcı kaydında dan türeyen ilan
         / / CAccessor
         wsprintf ("%d", rs.m_nFooID); 
      }
      
    • CDynamicAccessor ya da CDynamicParameterAccessor sınıf kullanıyorsanız, eğer veri GetValue ve GetColumn, erişme işlevleri kullanarak aşağıdaki kodda gösterildiği gibi getirmek. Kullanmakta olduğunuz veri türünü belirlemek istiyorsanız, GetType kullanın.
      (rs.MoveNext() == s_ok)
      {
       nbsp; / / Almak için dinamik erişimci işlevleri kullanmak için
         / / veri
      
      ulong ulColumns rs =.GetColumnCount();
         için (ulong i = 0; i < ulColumns; i ++)
         {
           RS.GetValue(i);
         }
      }
      
    • CManualAccessorkullanıyorsanız, kendi veri üyeleri belirlemek, bunları kendiniz bağlamak ve gerekir burada gösterildiği gibi doğrudan erişim:
      (rs.Move&Next() == s_ok)
      {
       nbsp; / / Belirtilen çağrıları veri üyeleri
         / / AddBindEntry.
      
      wsprintf ("%s", szFoo);
      }
      

Index