Jelajahi Sumber

* implementation of sqSupportEmptyDatabaseName from Laco, used in PostGres and MSSQL

git-svn-id: trunk@25584 -
michael 12 tahun lalu
induk
melakukan
48250dcafd

+ 3 - 15
packages/fcl-db/src/sqldb/mssql/mssqlconn.pp

@@ -314,7 +314,7 @@ end;
 constructor TMSSQLConnection.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);
-  FConnOptions := FConnOptions + [sqEscapeRepeat];
+  FConnOptions := FConnOptions + [sqSupportEmptyDatabaseName, sqEscapeRepeat];
   //FieldNameQuoteChars:=DoubleQuotes; //default
   Ftds := DBTDS_UNKNOWN;
 end;
@@ -397,21 +397,9 @@ const
   CURSOR_CLOSE_ON_COMMIT_OFF: array[boolean] of shortstring = ('SET CURSOR_CLOSE_ON_COMMIT OFF', 'SET CLOSE ON ENDTRAN OFF');
   VERSION_NUMBER: array[boolean] of shortstring = ('SERVERPROPERTY(''ProductVersion'')', '@@version_number');
   
-Var
-  B : Boolean;
-    
 begin
-  // Do not call the inherited method as it checks for a non-empty DatabaseName, empty DatabaseName=default database defined for login
-  // MVC: Inherited MUST be called to do housekeeping.
-  B:=DatabaseName='';
-  if B then
-    DatabaseName:='Dummy';
-  try  
-    inherited DoInternalConnect;
-  finally
-    if B then 
-      DatabaseName:='';
-  end;
+  // empty DatabaseName=default database defined for login
+  inherited DoInternalConnect;
 
   InitialiseDBLib(DBLibLibraryName);
 

+ 1 - 1
packages/fcl-db/src/sqldb/postgres/pqconnection.pp

@@ -224,7 +224,7 @@ constructor TPQConnection.Create(AOwner : TComponent);
 
 begin
   inherited;
-  FConnOptions := FConnOptions + [sqSupportParams] + [sqEscapeRepeat] + [sqEscapeSlash];
+  FConnOptions := FConnOptions + [sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeRepeat, sqEscapeSlash];
   FieldNameQuoteChars:=DoubleQuotes;
   VerboseErrors:=True;
   FConnectionPool:=TThreadlist.Create;

+ 2 - 2
packages/fcl-db/src/sqldb/sqldb.pp

@@ -24,7 +24,7 @@ uses SysUtils, Classes, DB, bufdataset, sqlscript;
 
 type
   TSchemaType = (stNoSchema, stTables, stSysTables, stProcedures, stColumns, stProcedureParams, stIndexes, stPackages, stSchemata);
-  TConnOption = (sqSupportParams,sqEscapeSlash,sqEscapeRepeat);
+  TConnOption = (sqSupportParams, sqSupportEmptyDatabaseName, sqEscapeSlash, sqEscapeRepeat);
   TConnOptions= set of TConnOption;
   TConnInfoType=(citAll=-1, citServerType, citServerVersion, citServerVersionString, citClientName, citClientVersion);
   TStatementType = (stUnknown, stSelect, stInsert, stUpdate, stDelete,
@@ -976,7 +976,7 @@ end;
 
 procedure TSQLConnection.DoInternalConnect;
 begin
-  if (DatabaseName = '') then
+  if (DatabaseName = '') and not(sqSupportEmptyDatabaseName in FConnOptions) then
     DatabaseError(SErrNoDatabaseName,self);
 end;