1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtSql module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** conditions contained in a signed written agreement between you and Nokia.
40 ****************************************************************************/
42 #include "qsqlindex.h"
44 #include "qsqlfield.h"
45 #include "qstringlist.h"
51 \brief The QSqlIndex class provides functions to manipulate and
52 describe database indexes.
57 An \e index refers to a single table or view in a database.
58 Information about the fields that comprise the index can be used
59 to generate SQL statements.
63 Constructs an empty index using the cursor name \a cursorname and
67 QSqlIndex::QSqlIndex(const QString& cursorname, const QString& name)
68 : cursor(cursorname), nm(name)
73 Constructs a copy of \a other.
76 QSqlIndex::QSqlIndex(const QSqlIndex& other)
77 : QSqlRecord(other), cursor(other.cursor), nm(other.nm), sorts(other.sorts)
82 Sets the index equal to \a other.
85 QSqlIndex& QSqlIndex::operator=(const QSqlIndex& other)
87 cursor = other.cursor;
90 QSqlRecord::operator=(other);
95 Destroys the object and frees any allocated resources.
98 QSqlIndex::~QSqlIndex()
104 Sets the name of the index to \a name.
107 void QSqlIndex::setName(const QString& name)
113 \fn QString QSqlIndex::name() const
115 Returns the name of the index.
119 Appends the field \a field to the list of indexed fields. The
120 field is appended with an ascending sort order.
123 void QSqlIndex::append(const QSqlField& field)
125 append(field, false);
131 Appends the field \a field to the list of indexed fields. The
132 field is appended with an ascending sort order, unless \a desc is
136 void QSqlIndex::append(const QSqlField& field, bool desc)
139 QSqlRecord::append(field);
144 Returns true if field \a i in the index is sorted in descending
145 order; otherwise returns false.
148 bool QSqlIndex::isDescending(int i) const
150 if (i >= 0 && i < sorts.size())
156 If \a desc is true, field \a i is sorted in descending order.
157 Otherwise, field \a i is sorted in ascending order (the default).
158 If the field does not exist, nothing happens.
161 void QSqlIndex::setDescending(int i, bool desc)
163 if (i >= 0 && i < sorts.size())
169 Creates a string representing the field number \a i using prefix \a
170 prefix. If \a verbose is true, ASC or DESC is included in the field
171 description if the field is sorted in ASCending or DESCending order.
174 QString QSqlIndex::createField(int i, const QString& prefix, bool verbose) const
177 if (!prefix.isEmpty())
178 f += prefix + QLatin1Char('.');
179 f += field(i).name();
181 f += QLatin1Char(' ') + QString((isDescending(i)
182 ? QLatin1String("DESC") : QLatin1String("ASC")));
187 \fn QString QSqlIndex::cursorName() const
189 Returns the name of the cursor which the index is associated with.
194 Sets the name of the cursor that the index is associated with to
197 void QSqlIndex::setCursorName(const QString& cursorName)