summaryrefslogtreecommitdiffstats
path: root/src/plugins/sqldrivers/odbc
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2024-01-21 17:59:31 +0100
committerChristian Ehrlicher <ch.ehrlicher@gmx.de>2024-02-09 23:16:39 +0100
commit16c27a83f0c9c6f53578dd56024719a709cafcb0 (patch)
tree1a59e8c30a23717a207acdb750c16bea92d86aa8 /src/plugins/sqldrivers/odbc
parent06039b523d2969e6683f9daf7d89dae727e7eaf4 (diff)
SQL/ODBC: Remove code duplication - merge SQLFetch/SQLFetchScroll
... into an own function instead doing the check if fetchScroll is available in every function. Pick-to: 6.7 Change-Id: I8c8a1c8693f667ddf89a660b733e31505427073a Reviewed-by: Andy Shaw <andy.shaw@qt.io>
Diffstat (limited to 'src/plugins/sqldrivers/odbc')
-rw-r--r--src/plugins/sqldrivers/odbc/qsql_odbc.cpp55
1 files changed, 14 insertions, 41 deletions
diff --git a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
index 692234f7f0..781551ca50 100644
--- a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
+++ b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
@@ -115,6 +115,7 @@ public:
DefaultCase defaultCase() const;
QString adjustCase(const QString&) const;
QChar quoteChar();
+ SQLRETURN sqlFetchNext(SQLHANDLE hStmt) const;
private:
bool isQuoteInitialized = false;
QChar quote = u'"';
@@ -676,6 +677,13 @@ QChar QODBCDriverPrivate::quoteChar()
return quote;
}
+SQLRETURN QODBCDriverPrivate::sqlFetchNext(SQLHANDLE hStmt) const
+{
+ if (hasSQLFetchScroll)
+ return SQLFetchScroll(hStmt, SQL_FETCH_NEXT, 0);
+ return SQLFetch(hStmt);
+}
+
static SQLRETURN qt_string_SQLSetConnectAttr(SQLHDBC handle, SQLINTEGER attr, const QString &val)
{
auto encoded = toSQLTCHAR(val);
@@ -2340,13 +2348,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
if (r != SQL_SUCCESS)
qSqlWarning("QODBCDriver::tables Unable to execute table list"_L1, d);
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
-
+ r = d->sqlFetchNext(hStmt);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO && r != SQL_NO_DATA) {
qSqlWarning("QODBCDriver::tables failed to retrieve table/view list: ("_L1
+ QString::number(r) + u':',
@@ -2356,13 +2358,7 @@ QStringList QODBCDriver::tables(QSql::TableType type) const
while (r == SQL_SUCCESS) {
tl.append(qGetStringData(hStmt, 2, -1, d->unicode).toString());
-
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
+ r = d->sqlFetchNext(hStmt);
}
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
@@ -2427,12 +2423,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
}
}
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
+ r = d->sqlFetchNext(hStmt);
int fakeId = 0;
QString cName, idxName;
@@ -2448,13 +2439,7 @@ QSqlIndex QODBCDriver::primaryIndex(const QString& tablename) const
index.append(rec.field(cName));
index.setName(idxName);
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
-
+ r = d->sqlFetchNext(hStmt);
}
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
if (r!= SQL_SUCCESS)
@@ -2499,24 +2484,12 @@ QSqlRecord QODBCDriver::record(const QString& tablename) const
if (r != SQL_SUCCESS)
qSqlWarning("QODBCDriver::record: Unable to execute column list"_L1, d);
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
-
+ r = d->sqlFetchNext(hStmt);
// Store all fields in a StringList because some drivers can't detail fields in this FETCH loop
while (r == SQL_SUCCESS) {
fil.append(qMakeFieldInfo(hStmt, d));
-
- if (d->hasSQLFetchScroll)
- r = SQLFetchScroll(hStmt,
- SQL_FETCH_NEXT,
- 0);
- else
- r = SQLFetch(hStmt);
+ r = d->sqlFetchNext(hStmt);
}
r = SQLFreeHandle(SQL_HANDLE_STMT, hStmt);