[fdo-dev] ConnectionString property

Romica Dascalescu Romica.Dascalescu at autodesk.com
Fri Dec 15 21:06:17 EST 2006


Hi Mateusz,

Each rdbms provider must implement GetConnectionProperties which returns
a FdoIConnectionPropertyDictionary.
Inside of this function you must define which properties are recognized
by the provider. In case user passing an invalid parameter
FdoRdbmsConnection::Open will throw an exception.
FdoRdbmsConnection::Open() checks in a general way the parameters passed
by the user using the FdoIConnectionPropertyDictionary returned by
GetConnectionProperties.
DbiConnection::Open() is an internal class/function which is the same
for all providers but is not checking for the connections parameters.
You can allow a parameter by adding the property to the connection
dictionary. See
\\Providers\GenericRdbms\Src\MySQL\Fdo\FdoRdbmsMySqlConnectionInfo.cpp
FdoIConnectionPropertyDictionary*
FdoRdbmsMySqlConnectionInfo::GetConnectionProperties()

Even in DbiConnection::Open() we checking for connection string if
connection string was not allowed in the GetConnectionProperties you
will get an exception.
DbiConnection::Open() is not validating the connection string,
FdoRdbmsConnection::Open() will validate it.

Romy.

-----Original Message-----
From: Mateusz Loskot [mailto:mateusz at loskot.net] 
Sent: Friday, December 15, 2006 7:34 PM
To: dev at fdo.osgeo.org
Subject: Re: [fdo-dev] ConnectionString property

Mateusz Loskot wrote:
> I'm testing the PostGIS provider with both approaches and the latter
> works, but the former doesn't for me. What's interesting, MySQL
> provider also doesn't work with the ConnectionString property.
> 
> Here is my full string I use to connect to a particular database:
> 
> ConnectionString=fdo_test at localhost;username=mloskot;password=pantera;
> 
One additional note.
Currently, I use simple hack to pass database name together with
hostname but without using ConnectionString property:

service=fdo_test at localhost;username=mloskot;password=pantera;

This way

a) the FdoRdbmsConnection::Open() doesn't refuse the parameters set as
including invalid property.

b) value of service= parameter is passed to rdbi_connect as DataSource
instead of as ConnectionString, but it doesn't matter, because I still
can decode the value and retrieve all components I need.

Cheers
-- 
Mateusz Loskot
http://mateusz.loskot.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe at fdo.osgeo.org
For additional commands, e-mail: dev-help at fdo.osgeo.org






More information about the Fdo-internals mailing list