1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: dbmetadata.hxx,v $
*
* $Revision: 1.2 $
*
* last change: $Author: obo $ $Date: 2006-07-10 14:16:17 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
#ifndef CONNECTIVITY_INC_CONNECTIVITY_DBMETADATA_HXX
#define CONNECTIVITY_INC_CONNECTIVITY_DBMETADATA_HXX
/** === begin UNO includes === **/
#ifndef _COM_SUN_STAR_SDBC_XCONNECTION_HPP_
#include <com/sun/star/sdbc/XConnection.hpp>
#endif
/** === end UNO includes === **/
#include <memory>
//........................................................................
namespace dbtools
{
//........................................................................
//====================================================================
//= DatabaseMetaData
//====================================================================
struct DatabaseMetaData_Impl;
/** encapsulates meta data about a database/connection which cannot be obtained
from the usual XDatabaseMetaData result set.
Meta data perhaps isn't really the right term ... Some of the methods
in this class involved heuristics, some are just a convenient wrapper
around more complex ways to obtain the same information.
@todo
Once CWS dba30 is integrated, we could easily add all the meta data
which is part of the "Info" property of a data source.
*/
class DatabaseMetaData
{
private:
::std::auto_ptr< DatabaseMetaData_Impl > m_pImpl;
public:
DatabaseMetaData();
/** constructs a DatabaseMetaData instance
@param _rxConnection
is the connection whose meta data you're interested in.
Note that some of the information provided by this class can only be obtained
if this connection denotes an application-level connection, i.e. supports
the com.sun.star.sdb.Connection service.
@throws ::com::sun::star::lang::IllegalArgumentException
if the given connection is not <NULL/>, but the XDatabaseMetaData provided by it
are <NULL/>
@throws ::com::sun::star::sdbc::SQLException
if obtaining the meta data from the connection throws an SQLException
@throws ::com::sun::star::uno::RuntimeException
if obtaining the meta data from the connection throws an RuntimeException
*/
DatabaseMetaData(
const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _connection );
DatabaseMetaData( const DatabaseMetaData& _copyFrom );
DatabaseMetaData& operator=( const DatabaseMetaData& _copyFrom );
~DatabaseMetaData();
public:
/** determines whether or not the instances is based on a valid connection
As long as this method returns true<TRUE/>, you should expect all other
methods throwing an SQLException when called.
*/
bool isConnected() const;
/** resets the instance so that it's based on a new connection
*/
inline void reset( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _connection )
{
*this = DatabaseMetaData( _connection );
}
/** determines whether the database supports sub queries in the FROM part
of a SELECT clause are supported.
@throws ::com::sun::star::sdbc::SQLException
with SQLState 08003 (connection does not exist) if the instances was
default-constructed and does not have a connection, yet.
*/
bool SAL_CALL supportsSubqueriesInFrom() const;
};
//........................................................................
} // namespace dbtools
//........................................................................
#endif // CONNECTIVITY_INC_CONNECTIVITY_DBMETADATA_HXX
|