Main Page   Namespace List   Class Hierarchy   Compound List   Header Files   Namespace Members   Compound Members  

odbc++/resultsetmetadata.h

This is the verbatim text of the resultsetmetadata.h include file.
/* 
   This file is part of libodbc++.
   
   Copyright (C) 1999-2000 Manush Dodunekov <manush@stendahls.net>
   
   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License as published by the Free Software Foundation; either
   version 2 of the License, or (at your option) any later version.
   
   This library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.
   
   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.  If not, write to
   the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.
*/

#ifndef __ODBCXX_RESULTSETMETADATA_H
#define __ODBCXX_RESULTSETMETADATA_H

#include <odbc++/setup.h>
#include <odbc++/types.h>
#include <odbc++/resultset.h>

namespace odbc {

  class ResultSet;
  class DriverInfo;

  class ODBCXX_EXPORT ResultSetMetaData {
    friend class ResultSet;
    friend class Statement;
  private:
    ResultSet* resultSet_;

    int numCols_;
    std::vector<ODBCXX_STRING> colNames_;
    std::vector<int> colTypes_;
    std::vector<int> colPrecisions_;
    std::vector<int> colScales_;
#if ODBCVER >= 0x0300
    std::vector<int> colLengths_;
#endif

    //internal stuff
    bool needsGetData_;

    //yes, both constructor and destructor are meant to be private
    ResultSetMetaData(ResultSet* rs);
    ~ResultSetMetaData() {}

    //driver info
    const DriverInfo* _getDriverInfo() const {
      return resultSet_->_getDriverInfo();
    }

    //these fetch info about a column
    int _getNumericAttribute(unsigned int col, SQLUSMALLINT attr);
    ODBCXX_STRING _getStringAttribute(unsigned int col, SQLUSMALLINT attr, unsigned int maxlen =255);

    //this loads the above values
    void _fetchColumnInfo();

  public:
    enum {
      columnNoNulls             = SQL_NO_NULLS,
      columnNullable            = SQL_NULLABLE,
      columnNullableUnknown     = SQL_NULLABLE_UNKNOWN
    };

    int getColumnCount() const;

    const ODBCXX_STRING& getColumnName(int column) const;

    int getColumnType(int column) const;

    int getPrecision(int column) const;

    int getScale(int column) const;

    int getColumnDisplaySize(int column);

    ODBCXX_STRING getCatalogName(int column);

    ODBCXX_STRING getColumnLabel(int column);

    ODBCXX_STRING getColumnTypeName(int column);

    ODBCXX_STRING getSchemaName(int column);

    ODBCXX_STRING getTableName(int column);

    bool isAutoIncrement(int column);

    bool isCaseSensitive(int column);
    
    bool isCurrency(int column);

    bool isDefinitelyWritable(int column);

    int isNullable(int column);

    bool isReadOnly(int column);

    bool isSearchable(int column);

    bool isSigned(int column);

    bool isWritable(int column);
  };

  

}; // namespace odbc


#endif // __ODBCXX_RESULTSETMETADATA_H

Go back to the freeodbc++ homepage