File: qsqlquerymodel.html

package info (click to toggle)
python-qt4 4.7.3-1%2Bsqueeze1
  • links: PTS, VCS
  • area: main
  • in suites: squeeze
  • size: 28,504 kB
  • ctags: 4,680
  • sloc: python: 28,738; cpp: 8,897; sh: 245; xml: 243; makefile: 150
file content (129 lines) | stat: -rw-r--r-- 19,857 bytes parent folder | download
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">&#160;&#160;</td><td class="postheader" valign="center"><a href="../pyqt4ref.html"><font color="#004faf">Home</font></a>&#160;&#183; <a href="classes.html"><font color="#004faf">All Classes</font></a>&#160;&#183; <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&#160;<i>parent</i>&#160;=&#160;None)</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#canFetchMore">canFetchMore</a></b> (<i>self</i>, QModelIndex&#160;<i>parent</i>&#160;=&#160;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&#160;<i>parent</i>&#160;=&#160;QModelIndex())</li><li><div class="fn" />QVariant <b><a href="qsqlquerymodel.html#data">data</a></b> (<i>self</i>, QModelIndex, int&#160;<i>role</i>&#160;=&#160;Qt.DisplayRole)</li><li><div class="fn" /><b><a href="qsqlquerymodel.html#fetchMore">fetchMore</a></b> (<i>self</i>, QModelIndex&#160;<i>parent</i>&#160;=&#160;QModelIndex())</li><li><div class="fn" />QVariant <b><a href="qsqlquerymodel.html#headerData">headerData</a></b> (<i>self</i>, int, Qt.Orientation, int&#160;<i>role</i>&#160;=&#160;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&#160;<i>parent</i>&#160;=&#160;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&#160;<i>parent</i>&#160;=&#160;QModelIndex())</li><li><div class="fn" />int <b><a href="qsqlquerymodel.html#rowCount">rowCount</a></b> (<i>self</i>, QModelIndex&#160;<i>parent</i>&#160;=&#160;QModelIndex())</li><li><div class="fn" />bool <b><a href="qsqlquerymodel.html#setHeaderData">setHeaderData</a></b> (<i>self</i>, int, Qt.Orientation, QVariant, int&#160;<i>role</i>&#160;=&#160;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&#160;<i>db</i>&#160;=&#160;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-&gt;setQuery("SELECT name, salary FROM employee");
     model-&gt;setHeaderData(0, Qt.Horizontal, tr("Name"));
     model-&gt;setHeaderData(1, Qt.Horizontal, tr("Salary"));

     QTableView *view = new QTableView;
     view-&gt;setModel(model);
     view-&gt;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>&#160;<i>parent</i>&#160;=&#160;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>&#160;<i>parent</i>&#160;=&#160;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>&#160;<i>parent</i>&#160;=&#160;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&#160;<i>role</i>&#160;=&#160;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>&#160;<i>parent</i>&#160;=&#160;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-&gt;canFetchMore())
     myModel-&gt;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&#160;<i>role</i>&#160;=&#160;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>&#160;<i>parent</i>&#160;=&#160;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 &amp;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>&#160;<i>parent</i>&#160;=&#160;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>&#160;<i>parent</i>&#160;=&#160;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&#160;<i>role</i>&#160;=&#160;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>&#160;<i>db</i>&#160;=&#160;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() &lt;&lt; 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&#160;4.7.3 for X11</td><td align="center" width="50%">Copyright &#169; <a href="http://www.riverbankcomputing.com">Riverbank&#160;Computing&#160;Ltd</a> and <a href="http://www.qtsoftware.com">Nokia</a> 2010</td><td align="right" width="25%">Qt&#160;4.6.2</td></tr></table></div></address></body></html>