source: trunk/src/sql/qsqlextension_p.h@ 196

Last change on this file since 196 was 196, checked in by rudi, 14 years ago

Add SQL module (currently it isn't build by default, however it's needed for QtDesigner)

File size: 4.5 KB
Line 
1/****************************************************************************
2**
3** Definition of the QSqlExtension class
4**
5** Created : 2002-06-03
6**
7** Copyright (C) 2005-2007 Trolltech ASA. All rights reserved.
8**
9** This file is part of the sql module of the Qt GUI Toolkit.
10**
11** This file may be distributed under the terms of the Q Public License
12** as defined by Trolltech ASA of Norway and appearing in the file
13** LICENSE.QPL included in the packaging of this file.
14**
15** This file may be distributed and/or modified under the terms of the
16** GNU General Public License version 2 as published by the Free Software
17** Foundation and appearing in the file LICENSE.GPL included in the
18** packaging of this file.
19**
20** Licensees holding valid Qt Enterprise Edition licenses may use this
21** file in accordance with the Qt Commercial License Agreement provided
22** with the Software.
23**
24** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
26**
27** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
28** information about Qt Commercial License Agreements.
29** See http://www.trolltech.com/qpl/ for QPL licensing information.
30** See http://www.trolltech.com/gpl/ for GPL licensing information.
31**
32** Contact info@trolltech.com if any conditions of this licensing are
33** not clear to you.
34**
35**********************************************************************/
36
37#ifndef QSQLEXTENSION_P_H
38#define QSQLEXTENSION_P_H
39
40//
41// W A R N I N G
42// -------------
43//
44// This file is not part of the Qt API. It exists for the convenience
45// of other Qt classes. This header file may change from version to
46// version without notice, or even be removed.
47//
48// We mean it.
49//
50//
51
52#ifndef QT_H
53#include "qmap.h"
54#include "qvaluevector.h"
55#include "qstring.h"
56#include "qvariant.h"
57#include "qsql.h"
58#endif // QT_H
59
60#ifndef QT_NO_SQL
61
62#if !defined( QT_MODULE_SQL ) || defined( QT_LICENSE_PROFESSIONAL )
63#define QM_EXPORT_SQL
64#define QM_TEMPLATE_EXTERN_SQL
65#else
66#define QM_EXPORT_SQL Q_EXPORT
67#define QM_TEMPLATE_EXTERN_SQL Q_TEMPLATE_EXTERN
68#endif
69
70struct Param {
71 Param( const QVariant& v = QVariant(), QSql::ParameterType t = QSql::In ): value( v ), typ( t ) {}
72 QVariant value;
73 QSql::ParameterType typ;
74 Q_DUMMY_COMPARISON_OPERATOR(Param)
75};
76
77struct Holder {
78 Holder( const QString& hldr = QString::null, int pos = -1 ): holderName( hldr ), holderPos( pos ) {}
79 bool operator==( const Holder& h ) const { return h.holderPos == holderPos && h.holderName == holderName; }
80 bool operator!=( const Holder& h ) const { return h.holderPos != holderPos || h.holderName != holderName; }
81 QString holderName;
82 int holderPos;
83};
84
85#define Q_DEFINED_QSQLEXTENSION
86#include "qwinexport.h"
87
88class QM_EXPORT_SQL QSqlExtension {
89public:
90 QSqlExtension();
91 virtual ~QSqlExtension();
92 virtual bool prepare( const QString& query );
93 virtual bool exec();
94 virtual void bindValue( const QString& holder, const QVariant& value, QSql::ParameterType = QSql::In );
95 virtual void bindValue( int pos, const QVariant& value, QSql::ParameterType = QSql::In );
96 virtual void addBindValue( const QVariant& value, QSql::ParameterType = QSql::In );
97 virtual QVariant parameterValue( const QString& holder );
98 virtual QVariant parameterValue( int pos );
99 QVariant boundValue( const QString& holder ) const;
100 QVariant boundValue( int pos ) const;
101 QMap<QString, QVariant> boundValues() const;
102 void clear();
103 void clearValues();
104 void clearIndex();
105 void resetBindCount();
106
107 enum BindMethod { BindByPosition, BindByName };
108 BindMethod bindMethod(); // ### 4.0: make this const
109 BindMethod bindm;
110 int bindCount;
111
112 QMap<int, QString> index;
113 typedef QMap<QString, Param> ValueMap;
114 ValueMap values;
115
116 // convenience container for QSqlQuery
117 // to map holders <-> positions
118 typedef QValueVector<Holder> HolderVector;
119 HolderVector holders;
120};
121
122class QM_EXPORT_SQL QSqlDriverExtension
123{
124public:
125 QSqlDriverExtension();
126 virtual ~QSqlDriverExtension();
127 virtual bool isOpen() const = 0;
128};
129
130class QM_EXPORT_SQL QSqlOpenExtension
131{
132public:
133 QSqlOpenExtension();
134 virtual ~QSqlOpenExtension();
135 virtual bool open( const QString& db,
136 const QString& user,
137 const QString& password,
138 const QString& host,
139 int port,
140 const QString& connOpts ) = 0;
141};
142#endif
143
144#endif
Note: See TracBrowser for help on using the repository browser.