diff options
author | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-02-01 05:53:18 (GMT) |
---|---|---|
committer | Rohan McGovern <rohan.mcgovern@nokia.com> | 2010-02-01 05:53:18 (GMT) |
commit | 4915439de467d1119a46af66ea08dbe161d2f336 (patch) | |
tree | 450a989691b5a892b07d5edbe5cf88ba78d388a0 /src/sql/drivers/odbc/qsql_odbc.cpp | |
parent | 5bda4e27bbe3fde98bd5c628fada76dfccadad0e (diff) | |
parent | 4d1c8407c1ac16b6288c3aa0f7c2118d2748f348 (diff) | |
download | Qt-4915439de467d1119a46af66ea08dbe161d2f336.zip Qt-4915439de467d1119a46af66ea08dbe161d2f336.tar.gz Qt-4915439de467d1119a46af66ea08dbe161d2f336.tar.bz2 |
Merge commit 'origin/4.6' into oslo1-master
Conflicts:
doc/src/deployment/deployment.qdoc
doc/src/getting-started/installation.qdoc
examples/assistant/simpletextviewer/findfiledialog.cpp
examples/assistant/simpletextviewer/findfiledialog.h
examples/assistant/simpletextviewer/mainwindow.cpp
examples/webkit/fancybrowser/main.cpp
src/corelib/global/qglobal.h
src/gui/dialogs/qfiledialog_win.cpp
src/plugins/qpluginbase.pri
src/qbase.pri
tests/auto/selftests/expected_cmptest.txt
tests/auto/selftests/expected_crashes_3.txt
tests/auto/selftests/expected_longstring.txt
tests/auto/selftests/expected_maxwarnings.txt
tests/auto/selftests/expected_skip.txt
tools/assistant/compat/config.cpp
tools/assistant/compat/config.h
tools/assistant/compat/docuparser.cpp
tools/assistant/compat/docuparser.h
tools/assistant/compat/fontsettingsdialog.cpp
tools/assistant/compat/helpdialog.cpp
tools/assistant/compat/helpdialog.h
tools/assistant/compat/helpdialog.ui
tools/assistant/compat/helpwindow.cpp
tools/assistant/compat/helpwindow.h
tools/assistant/compat/index.cpp
tools/assistant/compat/index.h
tools/assistant/compat/lib/qassistantclient.cpp
tools/assistant/compat/lib/qassistantclient.h
tools/assistant/compat/main.cpp
tools/assistant/compat/mainwindow.cpp
tools/assistant/compat/mainwindow.h
tools/assistant/compat/mainwindow.ui
tools/assistant/compat/profile.cpp
tools/assistant/compat/profile.h
tools/assistant/compat/tabbedbrowser.cpp
tools/assistant/compat/tabbedbrowser.h
tools/assistant/compat/tabbedbrowser.ui
tools/assistant/compat/topicchooser.cpp
tools/assistant/compat/topicchooser.ui
tools/assistant/lib/qhelpsearchquerywidget.cpp
tools/assistant/tools/assistant/centralwidget.cpp
tools/assistant/tools/assistant/doc/assistant.qdocconf
tools/assistant/tools/assistant/helpviewer.cpp
tools/linguist/lupdate/main.cpp
tools/qdoc3/test/assistant.qdocconf
tools/qdoc3/test/designer.qdocconf
tools/qdoc3/test/linguist.qdocconf
tools/qdoc3/test/qmake.qdocconf
tools/qdoc3/test/qt-build-docs.qdocconf
tools/qdoc3/test/qt.qdocconf
Diffstat (limited to 'src/sql/drivers/odbc/qsql_odbc.cpp')
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.cpp | 32 |
1 files changed, 24 insertions, 8 deletions
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index e686873..2049a76 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** @@ -172,28 +172,39 @@ static QString qWarnODBCHandle(int handleType, SQLHANDLE handle, int *nativeCode SQLSMALLINT msgLen = 0; SQLRETURN r = SQL_NO_DATA; SQLTCHAR state_[SQL_SQLSTATE_SIZE+1]; - SQLTCHAR description_[SQL_MAX_MESSAGE_LENGTH]; + QVarLengthArray<SQLTCHAR> description_(SQL_MAX_MESSAGE_LENGTH); QString result; int i = 1; description_[0] = 0; + r = SQLGetDiagRec(handleType, + handle, + i, + state_, + &nativeCode_, + 0, + NULL, + &msgLen); + if(r == SQL_NO_DATA) + return QString(); + description_.resize(msgLen+1); do { r = SQLGetDiagRec(handleType, handle, i, - (SQLTCHAR*)state_, + state_, &nativeCode_, - (SQLTCHAR*)description_, - SQL_MAX_MESSAGE_LENGTH, /* in bytes, not in characters */ + description_.data(), + description_.size(), &msgLen); if (r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) { if (nativeCode) *nativeCode = nativeCode_; QString tmpstore; #ifdef UNICODE - tmpstore = QString((const QChar*)description_, msgLen); + tmpstore = QString((const QChar*)description_.data(), msgLen); #else - tmpstore = QString::fromLocal8Bit((const char*)description_, msgLen); + tmpstore = QString::fromLocal8Bit((const char*)description_.data(), msgLen); #endif if(result != tmpstore) { if(!result.isEmpty()) @@ -877,12 +888,17 @@ bool QODBCResult::reset (const QString& query) (SQLCHAR*) query8.constData(), (SQLINTEGER) query8.length()); #endif - if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) { + if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO && r!= SQL_NO_DATA) { setLastError(qMakeError(QCoreApplication::translate("QODBCResult", "Unable to execute statement"), QSqlError::StatementError, d)); return false; } + if(r == SQL_NO_DATA) { + setSelect(false); + return true; + } + SQLINTEGER isScrollable, bufferLength; r = SQLGetStmtAttr(d->hStmt, SQL_ATTR_CURSOR_SCROLLABLE, &isScrollable, SQL_IS_INTEGER, &bufferLength); if(r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) |