Skip to content

Commit a763594

Browse files
committed
Fix #11208 - Error when saving MSSQL layer when using DSN
1 parent 8e2def5 commit a763594

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/providers/mssql/qgsmssqlprovider.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -754,6 +754,10 @@ bool QgsMssqlProvider::addFeatures( QgsFeatureList & flist )
754754
statement = QString( "INSERT INTO [%1].[%2] (" ).arg( mSchemaName, mTableName );
755755

756756
bool first = true;
757+
if ( !mDatabase.isOpen() )
758+
{
759+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
760+
}
757761
QSqlQuery query = QSqlQuery( mDatabase );
758762
query.setForwardOnly( true );
759763

@@ -951,6 +955,10 @@ bool QgsMssqlProvider::addAttributes( const QList<QgsField> &attributes )
951955
statement += QString( "[%1] %2" ).arg( it->name(), type );
952956
}
953957

958+
if ( !mDatabase.isOpen() )
959+
{
960+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
961+
}
954962
QSqlQuery query = QSqlQuery( mDatabase );
955963
query.setForwardOnly( true );
956964
if ( !query.exec( statement ) )
@@ -979,6 +987,11 @@ bool QgsMssqlProvider::deleteAttributes( const QgsAttributeIds &attributes )
979987
statement += QString( "[%1]" ).arg( mAttributeFields[*it].name() );
980988
}
981989

990+
if ( !mDatabase.isOpen() )
991+
{
992+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
993+
}
994+
982995
QSqlQuery query = QSqlQuery( mDatabase );
983996
query.setForwardOnly( true );
984997

@@ -1015,6 +1028,10 @@ bool QgsMssqlProvider::changeAttributeValues( const QgsChangedAttributesMap & at
10151028
statement = QString( "UPDATE [%1].[%2] SET " ).arg( mSchemaName, mTableName );
10161029

10171030
bool first = true;
1031+
if ( !mDatabase.isOpen() )
1032+
{
1033+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
1034+
}
10181035
QSqlQuery query = QSqlQuery( mDatabase );
10191036
query.setForwardOnly( true );
10201037

@@ -1121,6 +1138,10 @@ bool QgsMssqlProvider::changeGeometryValues( QgsGeometryMap & geometry_map )
11211138
QString statement;
11221139
statement = QString( "UPDATE [%1].[%2] SET " ).arg( mSchemaName, mTableName );
11231140

1141+
if ( !mDatabase.isOpen() )
1142+
{
1143+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
1144+
}
11241145
QSqlQuery query = QSqlQuery( mDatabase );
11251146
query.setForwardOnly( true );
11261147

@@ -1190,6 +1211,10 @@ bool QgsMssqlProvider::deleteFeatures( const QgsFeatureIds & id )
11901211
featureIds += "," + FID_TO_STRING( *it );
11911212
}
11921213

1214+
if ( !mDatabase.isOpen() )
1215+
{
1216+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
1217+
}
11931218
QSqlQuery query = QSqlQuery( mDatabase );
11941219
query.setForwardOnly( true );
11951220
QString statement;
@@ -1221,6 +1246,10 @@ bool QgsMssqlProvider::createSpatialIndex()
12211246
if ( mUseEstimatedMetadata )
12221247
UpdateStatistics( false );
12231248

1249+
if ( !mDatabase.isOpen() )
1250+
{
1251+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
1252+
}
12241253
QSqlQuery query = QSqlQuery( mDatabase );
12251254
query.setForwardOnly( true );
12261255
QString statement;
@@ -1250,6 +1279,10 @@ bool QgsMssqlProvider::createSpatialIndex()
12501279

12511280
bool QgsMssqlProvider::createAttributeIndex( int field )
12521281
{
1282+
if ( !mDatabase.isOpen() )
1283+
{
1284+
mDatabase = GetDatabase( mService, mHost, mDatabaseName, mUserName, mPassword );
1285+
}
12531286
QSqlQuery query = QSqlQuery( mDatabase );
12541287
query.setForwardOnly( true );
12551288
QString statement;

0 commit comments

Comments
 (0)