From c3c424b384b06354116e232bf4055514f9b205ce Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Mon, 17 Jun 2013 10:44:09 +0900 Subject: [PATCH] QSqlQuery::isNull string overload Introduce isNull overload to take field name as a parameter. This is corresponding to the commit 7e6e1412348fb8d8df844d821ee80d6d3de69517 Change-Id: I122f79707d26eaa09c2f38dc31aeee1dac7de33b Reviewed-by: Mark Brand --- src/sql/kernel/qsqlquery.cpp | 18 ++++++++++++++++++ src/sql/kernel/qsqlquery.h | 1 + .../sql/kernel/qsqlquery/tst_qsqlquery.cpp | 5 +++++ 3 files changed, 24 insertions(+) diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp index e5f4c5fc56e..e040257c62e 100644 --- a/src/sql/kernel/qsqlquery.cpp +++ b/src/sql/kernel/qsqlquery.cpp @@ -325,6 +325,24 @@ bool QSqlQuery::isNull(int field) const || d->sqlResult->isNull(field); } +/*! + \overload + + Returns true if there is no field with this \a name; otherwise + returns isNull(int index) for the corresponding field index. + + This overload is less efficient than \l{QSqlQuery::}{isNull()} +*/ + +bool QSqlQuery::isNull(const QString &name) const +{ + int index = d->sqlResult->record().indexOf(name); + if (index > -1) + return isNull(index); + qWarning("QSqlQuery::isNull: unknown field name '%s'", qPrintable(name)); + return true; +} + /*! Executes the SQL in \a query. Returns \c true and sets the query state diff --git a/src/sql/kernel/qsqlquery.h b/src/sql/kernel/qsqlquery.h index 37196431748..ef48b91298c 100644 --- a/src/sql/kernel/qsqlquery.h +++ b/src/sql/kernel/qsqlquery.h @@ -70,6 +70,7 @@ public: bool isValid() const; bool isActive() const; bool isNull(int field) const; + bool isNull(const QString &name) const; int at() const; QString lastQuery() const; int numRowsAffected() const; diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 9098d5b1013..b74e02bcc4d 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -1384,7 +1384,9 @@ void tst_QSqlQuery::isNull() QVERIFY_SQL(q, exec("select id, t_varchar from " + qTableName("qtest_null", __FILE__, db) + " order by id")); QVERIFY( q.next() ); QVERIFY( !q.isNull( 0 ) ); + QVERIFY(!q.isNull("id")); QVERIFY( q.isNull( 1 ) ); + QVERIFY(q.isNull("t_varchar")); QCOMPARE( q.value( 0 ).toInt(), 0 ); QCOMPARE( q.value( 1 ).toString(), QString() ); QVERIFY( !q.value( 0 ).isNull() ); @@ -1392,10 +1394,13 @@ void tst_QSqlQuery::isNull() QVERIFY( q.next() ); QVERIFY( !q.isNull( 0 ) ); + QVERIFY(!q.isNull("id")); QVERIFY( !q.isNull( 1 ) ); + QVERIFY(!q.isNull("t_varchar")); // For a non existent field, it should be returning true. QVERIFY(q.isNull(2)); + QVERIFY(q.isNull("unknown")); } /*! TDS specific BIT field test */