Aracılığıyla paylaş


Veri Getirme

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

Verileri getirmek için

  1. Uygun komutunu kullanarak satır kümesini açın.

  2. kullanıyorsanız CManualAccessor, henüz yapmadıysanız çıkış sütunlarını bağlayın. Aşağıdaki örnek DBViewer örneğinden alınmıştır. Sütunları GetColumnInfobağlamak için çağrısı yapın ve aşağıdaki örnekte gösterildiği gibi bağlamalarla bir 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. Verileri almak için bir while döngü yazın. Döngüde, aşağıdaki örnekte gösterildiği gibi imleci ilerletmek ve dönüş değerini S_OK karşı test etmek için çağrısı MoveNext yapın:

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

    • CAccessor sınıfını kullanıyorsanız, veri üyeleri içeren bir kullanıcı kaydınız olmalıdır. Aşağıdaki örnekte gösterildiği gibi bu veri üyelerini kullanarak verilerinize 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);
      }
      
    • veya CDynamicParameterAccessor sınıfını CDynamicAccessor kullanıyorsanız, aşağıdaki örnekte gösterildiği gibi ve GetColumnişlevlerine GetValue erişerek verileri getirebilirsiniz. Kullandığınız veri türünü belirlemek istiyorsanız kullanın GetType.

      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);
          }
      }
      
    • kullanıyorsanız CManualAccessor, aşağıdaki örnekte gösterildiği gibi kendi veri üyelerinizi belirtmeniz, bunları kendiniz bağlamanız ve bunlara doğrudan erişmeniz gerekir:

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

Ayrıca bkz.

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