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 125 126 127 128 129
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html><head><title>QSqlQueryModel Class Reference</title><style>h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
td.postheader { font-family: sans-serif }
tr.address { font-family: sans-serif }
body { background: #ffffff; color: black; }
</style></head><body><table border="0" cellpadding="0" cellspacing="0" width="100%"><tr /><td align="left" valign="top" width="32"><img align="left" border="0" height="32" src="images/rb-logo.png" width="32" /></td><td width="1">  </td><td class="postheader" valign="center"><a href="../pyqt4ref.html"><font color="#004faf">Home</font></a> · <a href="classes.html"><font color="#004faf">All Classes</font></a> · <a href="modules.html"><font color="#004faf">Modules</font></a></td></table><h1 align="center">QSqlQueryModel Class Reference<br /><sup><sup>[<a href="qtsql.html">QtSql</a> module]</sup></sup></h1><p>The QSqlQueryModel class provides a read-only data model for SQL result sets. <a href="#details">More...</a></p>
<p>Inherits <a href="qabstracttablemodel.html">QAbstractTableModel</a>.</p><p>Inherited by <a href="qsqltablemodel.html">QSqlTableModel</a>.</p><h3>Methods</h3><ul><li><div class="fn" /><b><a href="qsqlquerymodel.html#QSqlQueryModel">__init__</a></b> (<i>self</i>, QObject <i>parent</i> = None)</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a></b> (<i>self</i>, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#clear">clear</a></b> (<i>self</i>)</li><li><div class="fn" />int <b><a href="qsqlquerymodel.html#columnCount">columnCount</a></b> (<i>self</i>, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" />QVariant <b><a href="qsqlquerymodel.html#data">data</a></b> (<i>self</i>, QModelIndex, int <i>role</i> = Qt.DisplayRole)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#fetchMore">fetchMore</a></b> (<i>self</i>, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" />QVariant <b><a href="qsqlquerymodel.html#headerData">headerData</a></b> (<i>self</i>, int, Qt.Orientation, int <i>role</i> = Qt.DisplayRole)</li><li><div class="fn" />QModelIndex <b><a href="qsqlquerymodel.html#indexInQuery">indexInQuery</a></b> (<i>self</i>, QModelIndex)</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#insertColumns">insertColumns</a></b> (<i>self</i>, int, int, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" />QSqlError <b><a href="qsqlquerymodel.html#lastError">lastError</a></b> (<i>self</i>)</li><li><div class="fn" />QSqlQuery <b><a href="qsqlquerymodel.html#query">query</a></b> (<i>self</i>)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#queryChange">queryChange</a></b> (<i>self</i>)</li><li><div class="fn" />QSqlRecord <b><a href="qsqlquerymodel.html#record">record</a></b> (<i>self</i>, int)</li><li><div class="fn" />QSqlRecord <b><a href="qsqlquerymodel.html#record-2">record</a></b> (<i>self</i>)</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#removeColumns">removeColumns</a></b> (<i>self</i>, int, int, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" />int <b><a href="qsqlquerymodel.html#rowCount">rowCount</a></b> (<i>self</i>, QModelIndex <i>parent</i> = QModelIndex())</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#setHeaderData">setHeaderData</a></b> (<i>self</i>, int, Qt.Orientation, QVariant, int <i>role</i> = Qt.EditRole)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#setLastError">setLastError</a></b> (<i>self</i>, QSqlError)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#setQuery">setQuery</a></b> (<i>self</i>, QSqlQuery)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#setQuery-2">setQuery</a></b> (<i>self</i>, QString, QSqlDatabase <i>db</i> = QSqlDatabase())</li></ul><a name="details" /><hr /><h2>Detailed Description</h2><p>The QSqlQueryModel class provides a read-only data model for SQL result sets.</p>
<p>QSqlQueryModel is a high-level interface for executing SQL statements and traversing the result set. It is built on top of the lower-level <a href="qsqlquery.html">QSqlQuery</a> and can be used to provide data to view classes such as <a href="qtableview.html">QTableView</a>. For example:</p>
<pre> QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");
model->setHeaderData(0, Qt.Horizontal, tr("Name"));
model->setHeaderData(1, Qt.Horizontal, tr("Salary"));
QTableView *view = new QTableView;
view->setModel(model);
view->show();</pre>
<p>We set the model's query, then we set up the labels displayed in the view header.</p>
<p>QSqlQueryModel can also be used to access a database programmatically, without binding it to a view:</p>
<pre> QSqlQueryModel model;
model.setQuery("SELECT * FROM employee");
int salary = model.record(4).value("salary").toInt();</pre>
<p>The code snippet above extracts the <tt>salary</tt> field from record 4 in the result set of the query <tt>SELECT * from employee</tt>. Assuming that <tt>salary</tt> is column 2, we can rewrite the last line as follows:</p>
<pre> int salary = model.data(model.index(4, 2)).toInt();</pre>
<p>The model is read-only by default. To make it read-write, you must subclass it and reimplement <a href="qabstractitemmodel.html#setData">setData</a>() and <a href="qabstractitemmodel.html#flags">flags</a>(). Another option is to use <a href="qsqltablemodel.html">QSqlTableModel</a>, which provides a read-write model based on a single database table.</p>
<p>The <a href="sql-querymodel.html">sql/querymodel</a> example illustrates how to use QSqlQueryModel to display the result of a query. It also shows how to subclass QSqlQueryModel to customize the contents of the data before showing it to the user, and how to create a read-write model based on QSqlQueryModel.</p>
<p>If the database doesn't return the amount of selected rows in a query, the model will fetch rows incrementally. See <a href="qsqlquerymodel.html#fetchMore">fetchMore</a>() for more information.</p>
<p>See also <a href="qsqltablemodel.html">QSqlTableModel</a>, <a href="qsqlrelationaltablemodel.html">QSqlRelationalTableModel</a>, <a href="qsqlquery.html">QSqlQuery</a>, <a href="model-view-programming.html">Model/View Programming</a>, and <a href="sql-querymodel.html">Query Model Example</a>.</p>
<hr /><h2>Method Documentation</h2><h3 class="fn"><a name="QSqlQueryModel" />QSqlQueryModel.__init__ (<i>self</i>, <a href="qobject.html">QObject</a> <i>parent</i> = None)</h3><p>The <i>parent</i> argument, if not None, causes <i>self</i> to be owned by Qt instead of PyQt.</p><p>Creates an empty <a href="qsqlquerymodel.html">QSqlQueryModel</a> with the given <i>parent</i>.</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/~QSqlQueryModel" />
<h3 class="fn"><a name="canFetchMore" />bool QSqlQueryModel.canFetchMore (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#canFetchMore">QAbstractItemModel.canFetchMore</a>().</p>
<p>Returns true if it is possible to read more rows from the database. This only affects databases that don't report back the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver.hasFeature</a>()).</p>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p>See also <a href="qsqlquerymodel.html#fetchMore">fetchMore</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/clear" />
<h3 class="fn"><a name="clear" />QSqlQueryModel.clear (<i>self</i>)</h3><p>Clears the model and releases any acquired resource.</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/columnCount" />
<h3 class="fn"><a name="columnCount" />int QSqlQueryModel.columnCount (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#columnCount">QAbstractItemModel.columnCount</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/data" />
<h3 class="fn"><a name="data" />QVariant QSqlQueryModel.data (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a>, int <i>role</i> = Qt.DisplayRole)</h3><p>Reimplemented from <a href="qabstractitemmodel.html#data">QAbstractItemModel.data</a>().</p>
<p>Returns the value for the specified <i>item</i> and <i>role</i>.</p>
<p>If <i>item</i> is out of bounds or if an error occurred, an invalid <a href="qvariant.html">QVariant</a> is returned.</p>
<p>See also <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/fetchMore" />
<h3 class="fn"><a name="fetchMore" />QSqlQueryModel.fetchMore (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#fetchMore">QAbstractItemModel.fetchMore</a>().</p>
<p>Fetches more rows from a database. This only affects databases that don't report back the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver.hasFeature</a>()).</p>
<p>To force fetching of the entire database, you can use the following:</p>
<pre> while (myModel->canFetchMore())
myModel->fetchMore();</pre>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p>See also <a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/headerData" />
<h3 class="fn"><a name="headerData" />QVariant QSqlQueryModel.headerData (<i>self</i>, int, <a href="qt.html#Orientation-enum">Qt.Orientation</a>, int <i>role</i> = Qt.DisplayRole)</h3><p>Reimplemented from <a href="qabstractitemmodel.html#headerData">QAbstractItemModel.headerData</a>().</p>
<p>Returns the header data for the given <i>role</i> in the <i>section</i> of the header with the specified <i>orientation</i>.</p>
<p>See also <a href="qsqlquerymodel.html#setHeaderData">setHeaderData</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/indexInQuery" />
<h3 class="fn"><a name="indexInQuery" /><a href="qmodelindex.html">QModelIndex</a> QSqlQueryModel.indexInQuery (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a>)</h3><p>Returns the index of the value in the database result set for the given <i>item</i> in the model.</p>
<p>The return value is identical to <i>item</i> if no columns or rows have been inserted, removed, or moved around.</p>
<p>Returns an invalid model index if <i>item</i> is out of bounds or if <i>item</i> does not point to a value in the result set.</p>
<p>See also <a href="qsqltablemodel.html#indexInQuery">QSqlTableModel.indexInQuery</a>(), <a href="qsqlquerymodel.html#insertColumns">insertColumns</a>(), and <a href="qsqlquerymodel.html#removeColumns">removeColumns</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/insertColumns" />
<h3 class="fn"><a name="insertColumns" />bool QSqlQueryModel.insertColumns (<i>self</i>, int, int, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#insertColumns">QAbstractItemModel.insertColumns</a>().</p>
<p>Inserts <i>count</i> columns into the model at position <i>column</i>. The <i>parent</i> parameter must always be an invalid <a href="qmodelindex.html">QModelIndex</a>, since the model does not support parent-child relationships.</p>
<p>Returns true if <i>column</i> is within bounds; otherwise returns false.</p>
<p>By default, inserted columns are empty. To fill them with data, reimplement <a href="qsqlquerymodel.html#data">data</a>() and handle any inserted column separately:</p>
<pre> QVariant MyModel.data(const QModelIndex &item, int role) const
{
if (item.column() == m_specialColumnNo) {
<span class="comment">// handle column separately</span>
}
return QSqlQueryModel.data(item, role);
}</pre>
<p>See also <a href="qsqlquerymodel.html#removeColumns">removeColumns</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/lastError" />
<h3 class="fn"><a name="lastError" /><a href="qsqlerror.html">QSqlError</a> QSqlQueryModel.lastError (<i>self</i>)</h3><p>Returns information about the last error that occurred on the database.</p>
<p>See also <a href="qsqlquerymodel.html#setLastError">setLastError</a>() and <a href="qsqlquerymodel.html#query">query</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/query" />
<h3 class="fn"><a name="query" /><a href="qsqlquery.html">QSqlQuery</a> QSqlQueryModel.query (<i>self</i>)</h3><p>Returns the <a href="qsqlquery.html">QSqlQuery</a> associated with this model.</p>
<p>See also <a href="qsqlquerymodel.html#setQuery">setQuery</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/queryChange" />
<h3 class="fn"><a name="queryChange" />QSqlQueryModel.queryChange (<i>self</i>)</h3><p>This virtual function is called whenever the query changes. The default implementation does nothing.</p>
<p><a href="qsqlquerymodel.html#query">query</a>() returns the new query.</p>
<p>See also <a href="qsqlquerymodel.html#query">query</a>() and <a href="qsqlquerymodel.html#setQuery">setQuery</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/record" />
<h3 class="fn"><a name="record" /><a href="qsqlrecord.html">QSqlRecord</a> QSqlQueryModel.record (<i>self</i>, int)</h3><p>Returns the record containing information about the fields of the current query. If <i>row</i> is the index of a valid row, the record will be populated with values from that row.</p>
<p>If the model is not initialized, an empty record will be returned.</p>
<p>See also <a href="qsqlrecord.html#isEmpty">QSqlRecord.isEmpty</a>().</p>
<h3 class="fn"><a name="record-2" /><a href="qsqlrecord.html">QSqlRecord</a> QSqlQueryModel.record (<i>self</i>)</h3><p>This is an overloaded function.</p>
<p>Returns an empty record containing information about the fields of the current query.</p>
<p>If the model is not initialized, an empty record will be returned.</p>
<p>See also <a href="qsqlrecord.html#isEmpty">QSqlRecord.isEmpty</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/removeColumns" />
<h3 class="fn"><a name="removeColumns" />bool QSqlQueryModel.removeColumns (<i>self</i>, int, int, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#removeColumns">QAbstractItemModel.removeColumns</a>().</p>
<p>Removes <i>count</i> columns from the model starting from position <i>column</i>. The <i>parent</i> parameter must always be an invalid <a href="qmodelindex.html">QModelIndex</a>, since the model does not support parent-child relationships.</p>
<p>Removing columns effectively hides them. It does not affect the underlying <a href="qsqlquery.html">QSqlQuery</a>.</p>
<p>Returns true if the columns were removed; otherwise returns false.</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/rowCount" />
<h3 class="fn"><a name="rowCount" />int QSqlQueryModel.rowCount (<i>self</i>, <a href="qmodelindex.html">QModelIndex</a> <i>parent</i> = QModelIndex())</h3><p>Reimplemented from <a href="qabstractitemmodel.html#rowCount">QAbstractItemModel.rowCount</a>().</p>
<p>If the database supports returning the size of a query (see <a href="qsqldriver.html#hasFeature">QSqlDriver.hasFeature</a>()), the amount of rows of the current query is returned. Otherwise, returns the amount of rows currently cached on the client.</p>
<p><i>parent</i> should always be an invalid <a href="qmodelindex.html">QModelIndex</a>.</p>
<p>This function was introduced in Qt 4.1.</p>
<p>See also <a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a>() and <a href="qsqldriver.html#hasFeature">QSqlDriver.hasFeature</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/setHeaderData" />
<h3 class="fn"><a name="setHeaderData" />bool QSqlQueryModel.setHeaderData (<i>self</i>, int, <a href="qt.html#Orientation-enum">Qt.Orientation</a>, QVariant, int <i>role</i> = Qt.EditRole)</h3><p>Reimplemented from <a href="qabstractitemmodel.html#setHeaderData">QAbstractItemModel.setHeaderData</a>().</p>
<p>Sets the caption for a horizontal header for the specified <i>role</i> to <i>value</i>. This is useful if the model is used to display data in a view (e.g., <a href="qtableview.html">QTableView</a>).</p>
<p>Returns true if <i>orientation</i> is <a href="qt.html#Orientation-enum">Qt.Horizontal</a> and the <i>section</i> refers to a valid section; otherwise returns false.</p>
<p>Note that this function cannot be used to modify values in the database since the model is read-only.</p>
<p>See also <a href="qsqlquerymodel.html#headerData">headerData</a>() and <a href="qsqlquerymodel.html#data">data</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/setLastError" />
<h3 class="fn"><a name="setLastError" />QSqlQueryModel.setLastError (<i>self</i>, <a href="qsqlerror.html">QSqlError</a>)</h3><p>Protected function which allows derived classes to set the value of the last error that occurred on the database to <i>error</i>.</p>
<p>See also <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<a name="//apple_ref/cpp/instm/QSqlQueryModel/setQuery" />
<h3 class="fn"><a name="setQuery" />QSqlQueryModel.setQuery (<i>self</i>, <a href="qsqlquery.html">QSqlQuery</a>)</h3><p>Resets the model and sets the data provider to be the given <i>query</i>. Note that the query must be active and must not be isForwardOnly().</p>
<p><a href="qsqlquerymodel.html#lastError">lastError</a>() can be used to retrieve verbose information if there was an error setting the query.</p>
<p>See also <a href="qsqlquerymodel.html#query">query</a>(), <a href="qsqlquery.html#isActive">QSqlQuery.isActive</a>(), <a href="qsqlquery.html#setForwardOnly">QSqlQuery.setForwardOnly</a>(), and <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<h3 class="fn"><a name="setQuery-2" />QSqlQueryModel.setQuery (<i>self</i>, QString, <a href="qsqldatabase.html">QSqlDatabase</a> <i>db</i> = QSqlDatabase())</h3><p>This is an overloaded function.</p>
<p>Executes the query <i>query</i> for the given database connection <i>db</i>. If no database is specified, the default connection is used.</p>
<p><a href="qsqlquerymodel.html#lastError">lastError</a>() can be used to retrieve verbose information if there was an error setting the query.</p>
<p>Example:</p>
<pre> QSqlQueryModel model;
model.setQuery("select * from MyTable");
if (model.lastError().isValid())
qDebug() << model.lastError();</pre>
<p>See also <a href="qsqlquerymodel.html#query">query</a>(), <a href="qsqlquerymodel.html#queryChange">queryChange</a>(), and <a href="qsqlquerymodel.html#lastError">lastError</a>().</p>
<p /><address><hr /><div align="center"><table border="0" cellspacing="0" width="100%"><tr class="address"><td align="left" width="25%">PyQt 4.7.3 for X11</td><td align="center" width="50%">Copyright © <a href="http://www.riverbankcomputing.com">Riverbank Computing Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2010</td><td align="right" width="25%">Qt 4.6.2</td></tr></table></div></address></body></html>
|