In general you are correct that using cConnection class interfaces with non-connection ID server strings has to be done carefully. When we started with the cConnection class we thought that this class could be used for managed connections (i.e., connections using connection ids) and old style connections (connections where the server is defined directly in the INI file). That got harder and harder to manage because the old style connections were not, well ... managed.

The "is a connection logged in" issue is a good example of this. From the driver's point of view a connection is logged in if that exact connection string has an existing connection to the server/database. Your point of view might be that a connection is logged in if the connection string is equivalent to an existing connection, where equivalent means same server, database and credentials. While I might agree with your point of view, that's not how the driver works. If the driver doesn't think it is logged in, it will act accordingly and perform an additional login resulting in a second connection. This applies not just comparing connection id and non-connection id strings but also comparing server strings that have slightly different but equivalent formats (e.g., different ordering of parameters, use of spaces, casing).

When using managed connections and connection Ids the cConnection class can handle this so it works the way you would expect. If you set pbLoginOnOpen = False, this can be further controlled because you will get errors when you try to open a table or use an SQL connection that is not yet logged in. When not using managed connections, you have to be a lot more careful.

-John

p.s. Just to be clear - by "class documentation" you are referring to the comments for this private message (sorry, I just had to point that out).