@@ -350,6 +350,11 @@ void QgsMssqlProvider::loadMetadata()
350
350
mSRId = 0 ;
351
351
mWkbType = QGis::WKBUnknown;
352
352
353
+ if ( !mDatabase .isOpen () )
354
+ {
355
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
356
+ }
357
+
353
358
QSqlQuery query = QSqlQuery ( mDatabase );
354
359
query.setForwardOnly ( true );
355
360
if ( !query.exec ( QString ( " select f_geometry_column, coord_dimension, srid, geometry_type from geometry_columns where f_table_schema = '%1' and f_table_name = '%2'" ).arg ( mSchemaName , mTableName ) ) )
@@ -368,7 +373,12 @@ void QgsMssqlProvider::loadFields()
368
373
{
369
374
mAttributeFields .clear ();
370
375
mDefaultValues .clear ();
376
+
371
377
// get field spec
378
+ if ( !mDatabase .isOpen () )
379
+ {
380
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
381
+ }
372
382
QSqlQuery query = QSqlQuery ( mDatabase );
373
383
query.setForwardOnly ( true );
374
384
if ( !query.exec ( QString ( " exec sp_columns @table_name = N'%1', @table_owner = '%2'" ).arg ( mTableName , mSchemaName ) ) )
@@ -532,6 +542,10 @@ QVariant QgsMssqlProvider::minimumValue( int index )
532
542
sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
533
543
}
534
544
545
+ if ( !mDatabase .isOpen () )
546
+ {
547
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
548
+ }
535
549
QSqlQuery query = QSqlQuery ( mDatabase );
536
550
query.setForwardOnly ( true );
537
551
@@ -563,6 +577,10 @@ QVariant QgsMssqlProvider::maximumValue( int index )
563
577
sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
564
578
}
565
579
580
+ if ( !mDatabase .isOpen () )
581
+ {
582
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
583
+ }
566
584
QSqlQuery query = QSqlQuery ( mDatabase );
567
585
query.setForwardOnly ( true );
568
586
@@ -603,6 +621,10 @@ void QgsMssqlProvider::uniqueValues( int index, QList<QVariant> &uniqueValues, i
603
621
sql += QString ( " where (%1)" ).arg ( mSqlWhereClause );
604
622
}
605
623
624
+ if ( !mDatabase .isOpen () )
625
+ {
626
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
627
+ }
606
628
QSqlQuery query = QSqlQuery ( mDatabase );
607
629
query.setForwardOnly ( true );
608
630
@@ -631,6 +653,10 @@ void QgsMssqlProvider::UpdateStatistics( bool estimate )
631
653
// get features to calculate the statistics
632
654
QString statement;
633
655
656
+ if ( !mDatabase .isOpen () )
657
+ {
658
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
659
+ }
634
660
QSqlQuery query = QSqlQuery ( mDatabase );
635
661
query.setForwardOnly ( true );
636
662
@@ -758,6 +784,10 @@ long QgsMssqlProvider::featureCount() const
758
784
759
785
// If there is no subset set we can get the count from the system tables.
760
786
// Which is faster then doing select count(*)
787
+ if ( !mDatabase .isOpen () )
788
+ {
789
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
790
+ }
761
791
QSqlQuery query = QSqlQuery ( mDatabase );
762
792
query.setForwardOnly ( true );
763
793
@@ -1419,6 +1449,10 @@ QgsCoordinateReferenceSystem QgsMssqlProvider::crs()
1419
1449
return mCrs ;
1420
1450
1421
1451
// try to load crs from the database tables as a fallback
1452
+ if ( !mDatabase .isOpen () )
1453
+ {
1454
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
1455
+ }
1422
1456
QSqlQuery query = QSqlQuery ( mDatabase );
1423
1457
query.setForwardOnly ( true );
1424
1458
bool execOk = query.exec ( QString ( " select srtext from spatial_ref_sys where srid = %1" ).arg ( QString::number ( mSRId ) ) );
@@ -1472,6 +1506,10 @@ bool QgsMssqlProvider::setSubsetString( const QString& theSQL, bool )
1472
1506
sql += QString ( " where %1" ).arg ( mSqlWhereClause );
1473
1507
}
1474
1508
1509
+ if ( !mDatabase .isOpen () )
1510
+ {
1511
+ mDatabase = GetDatabase ( mService , mHost , mDatabaseName , mUserName , mPassword );
1512
+ }
1475
1513
QSqlQuery query = QSqlQuery ( mDatabase );
1476
1514
query.setForwardOnly ( true );
1477
1515
if ( !query.exec ( sql ) )
0 commit comments