2005/5/9

     
 

ResultSetMetaData.h

artefaktur
// -*- mode:C++; tab-width:2; c-basic-offset:2; indent-tabs-mode:nil -*- 
//
// Copyright (C) 2000-2005 by Roger Rene Kommer / artefaktur, Kassel, Germany.
// 
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Library General Public License (LGPL).
// 
// 
// 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 
// License ACDK-FreeLicense document enclosed in the distribution
// for more for more details.
// This file is part of the Artefaktur Component Development Kit:
//                         ACDK
// 
// Please refer to
// - http://www.acdk.de
// - http://www.artefaktur.com
// - http://acdk.sourceforge.net
// for more information.
// 
// $Header: /cvsroot/acdk/acdk/acdk_sql/src/acdk/sql/ResultSetMetaData.h,v 1.9 2005/04/04 16:18:47 kommer Exp $
#ifndef acdk_sql_ResultSetMetaData_h
#define acdk_sql_ResultSetMetaData_h

namespace acdk {
namespace sql {


enum Nullable 
{
  /**
    The column does not allow NULL's.
  */
    ColumnNoNulls = 0,
  /**
    The column allows NULL's.
  */
    ColumnNullable = 1,
    
  /**
    It is unknown whether or not the column allows NULL's.
  */
    ColumnNullableUnknown = 2
};

ACDK_DECL_INTERFACE(ResultSetMetaData);

class ACDK_SQL_PUBLIC ResultSetMetaData
      ACDK_INTERFACEBASE
{
  ACDK_WITH_METAINFO(ResultSetMetaData)
public:
  

/*************************************************************************/

/**
    This method returns the number of columns in the result set.
  
    @return The number of columns in the result set.
  
    @exception SQLException If an error occurs.
  */
  virtual int getColumnCount()  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method test whether or not the column is an auto-increment column.
    Auto-increment columns are read-only.
  *
    @param index The index of the column to test.
  *
    @return <code>true</code> if the column is auto-increment, <code>false</code>
    otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isAutoIncrement(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not a column is case sensitive in its values.
  *
    @param index The index of the column to test.
  *
    @return <code>true</code> if the column value is case sensitive,
    <code>false</code> otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isCaseSensitive(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether not the specified column can be used in 
    a WHERE clause.
  *
    @param index The index of the column to test.
  *
    @return <code>true</code> if the column may be used in a WHERE clause,
    <code>false</code> otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isSearchable(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not the column stores a monetary value.
  *
    @param index The index of the column to test.
  *
    @return <code>true</code> if the column contains a monetary value,
    <code>false</code> otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isCurrency(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns a value indicating whether or not the specified
    column may contain a NULL value.
  *
    @param index The index of the column to test.
  *
    @return A constant indicating whether or not the column can contain NULL,
    which will be one of <code>columnNoNulls</code>,
    <code>columnNullable</code>, or <code>columnNullableUnknown</code>.
  *
    @exception SQLException If an error occurs.
  */
  virtual int isNullable(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not the value of the specified column
    is signed or unsigned.
  *
    @param index The index of the column to test.
  *
    @return <code>true</code> if the column value is signed, <code>false</code>
    otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isSigned(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the maximum number of characters that can be used
    to display a value in this column.
  *
    @param index The index of the column to check.
  *
    @return The maximum number of characters that can be used to display a
    value for this column.
  *
    @exception SQLException If an error occurs.
  */
  virtual int getColumnDisplaySize(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns a string that should be used as a caption for this
    column for user display purposes.
  *
    @param index The index of the column to check.
  *
    @return A display string for the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getColumnLabel(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the specified column.
  *
    @param index The index of the column to return the name of.
  *
    @return The name of the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getColumnName(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the schema that contains the specified
    column.
  *
    @param index The index of the column to check the schema name for.
  *
    @return The name of the schema that contains the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getSchemaName(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the precision of the specified column, which is the
    number of decimal digits it contains.
  *
    @param index The index of the column to check the precision on.
  *
    @return The precision of the specified column.
  *
    @exception SQLException If an error occurs.
  */
  virtual int getPrecision(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the scale of the specified column, which is the
    number of digits to the right of the decimal point.
  *
    @param index The index column to check the scale of.
  *
    @return The scale of the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual int getScale(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the table containing the specified
    column.
  *
    @param index The index of the column to check the table name for.
  *
    @return The name of the table containing the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getTableName(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the catalog containing the specified
    column.
  *
    @param index The index of the column to check the catalog name for.
  *
    @return The name of the catalog containing the column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getCatalogName(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the SQL type of the specified column.  This will
    be one of the constants from <code>Types</code>.
  *
    @param index The index of the column to check the SQL type of.
  *
    @return The SQL type for this column.
  *
    @exception SQLException If an error occurs.
  *
    @see Types
  */
  virtual int getColumnType(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the SQL type for this column.
  *
    @param index The index of the column to check the SQL type name for.
  *
    @return The name of the SQL type for this column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getColumnTypeName(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not the specified column is read only.
  *
    @param index The index of the column to check.
  *
    @return <code>true</code> if the column is read only, <code>false</code>
    otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isReadOnly(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not the column may be writable.  This
    does not guarantee that a write will be successful.
  *
    @param index The index of the column to check for writability.
  *
    @return <code>true</code> if the column may be writable,
    <code>false</code> otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isWritable(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method tests whether or not the column is writable.  This
    does guarantee that a write will be successful.
  *
    @param index The index of the column to check for writability.
  *
    @return <code>true</code> if the column is writable,
    <code>false</code> otherwise.
  *
    @exception SQLException If an error occurs.
  */
  virtual bool isDefinitelyWritable(int index)  THROWS1(RSQLException) = 0;

/*************************************************************************/

/**
    This method returns the name of the Java class which will be used to
    create objects representing the data in this column.
  *
    @param index The index of the column to check.
  *
    @return The name of the Java class that will be used for values in
    this column.
  *
    @exception SQLException If an error occurs.
  */
  virtual RString getColumnClassName(int index)  THROWS1(RSQLException) = 0;
};          


} // sql
} // acdk
#endif //acdk_sql_ResultSetMetaData_h