DbLib: Prevent uncaught exception creating statement

Defer telling the statement about the connection until the
try block, because otherwise it can connect immediately and
potentially throw an exception if the connection fails.


(cherry picked from commit ddd7c35586)

Co-authored-by: Jon Evans <jon@craftyjon.com>
This commit is contained in:
Jon Evans 2024-05-06 21:00:13 +00:00
parent 8184ed64e7
commit 6c41354da5
1 changed files with 2 additions and 3 deletions

View File

@ -390,15 +390,14 @@ bool DATABASE_CONNECTION::SelectOne( const std::string& aTable,
columnsFor( tableName ), columnsFor( tableName ),
m_quoteChar, tableName, m_quoteChar, m_quoteChar, tableName, m_quoteChar,
m_quoteChar, columnName, m_quoteChar ); m_quoteChar, columnName, m_quoteChar );
nanodbc::statement statement( *m_conn );
nanodbc::string query = fromUTF8( queryStr ); nanodbc::string query = fromUTF8( queryStr );
PROF_TIMER timer; PROF_TIMER timer;
nanodbc::statement statement;
try try
{ {
statement.prepare( query ); statement.prepare( *m_conn, query );
statement.bind( 0, aWhere.second.c_str() ); statement.bind( 0, aWhere.second.c_str() );
} }
catch( nanodbc::database_error& e ) catch( nanodbc::database_error& e )