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>
This commit is contained in:
parent
06039b523d
commit
16c27a83f0
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user