Aracılığıyla paylaş


Veri Getirme

Veri kaynağı, oturum ve satır kümesi nesnesini açtıktan sonra, veriyi getirebilirsiniz. Kullandığınız erişimciye bağlı olarak, sütunları bağlamanız gerekebilir.

Veri getirmek için

  1. Uygun Open (Aç) komutunu kullanarak satır kümesini açın.

  2. CManualAccessor kullanıyorsanız, henüz yapmadıysanız çıktı sütunlarını bağlayın. Sütunları bağlamak için, GetColumnInfo'yu çağırın ve ardından aşağıdaki örnekte de gösterildiği gibi bağlarla erişimci oluşturun.

    // From the DBViewer Sample CDBTreeView::OnQueryEdit
    // Get the column information
    ULONG ulColumns       = 0;
    DBCOLUMNINFO* pColumnInfo  = NULL;
    LPOLESTR pStrings      = NULL;
    if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK)
        ThrowMyOLEDBException(rs.m_pRowset, IID_IColumnsInfo);
    struct MYBIND* pBind = new MYBIND[ulColumns];
    rs.CreateAccessor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns);
    for (ULONG l=0; l<ulColumns; l++)
    rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*40, &pBind[l].szValue, NULL, &pBind[l].dwStatus);
    rs.Bind();
    
  3. Veriyi almak için while döngüsü yazın. Döngüde, imleci ilerletmek için MoveNext'i çağırın ve aşağıdaki örnekte de gösterildiği gibi dönüş değerini S_OK ile sınayın.

    while (rs.MoveNext() == S_OK)
    {
        // Add code to fetch data here
        // If you are not using an auto accessor, call rs.GetData()
    }
    
  4. while döngüsünün içinde, erişimci türünüze göre veri getirebilirsiniz.

    • CAccessor sınıfını görürseniz, veri üyeleri içeren bir kullanıcı kaydınızın olması gerekir. Aşağıdaki örnekte gösterildiği üzere, bu veri üyelerini kullanarak verinize erişebilirsiniz.

      while (rs.MoveNext() == S_OK)
      {
          // Use the data members directly. In this case, m_nFooID
          // is declared in a user record that derives from
          // CAccessor
          wsprintf_s("%d", rs.m_nFooID); 
      }
      
    • CDynamicAccessor ya da CDynamicParameterAccessor sınıfını kullanırsanız, aşağıdaki örnekte de gösterildiği üzere GetValue ve GetColumn erişim işlevlerini kullanarak veri getirebilirsiniz. Kullandığınız verinin türünü belirlemek istiyorsanız, GetType'ı kullanın.

      while (rs.MoveNext() == S_OK)
      {
          // Use the dynamic accessor functions to retrieve your data.
      
          ULONG ulColumns = rs.GetColumnCount();
          for (ULONG i=0; i<ulColumns; i++)
          {
              rs.GetValue(i);
          }
      }
      
    • CManualAccessor kullanırsanız, aşağıdaki örnekte gösterildiği üzere kendi veri üyelerinizi belirtmeli, bunları kendiniz bağlamalı ve bunlara doğrudan erişmelisiniz.

      while (rs.MoveNext() == S_OK)
      {
          // Use the data members you specified in the calls to
          // AddBindEntry.
      
          wsprintf_s("%s", szFoo);
      }
      

Ayrıca bkz.

Başvuru

OLE DB Tüketici Şablonlarıyla Çalışma