Thanks for that, Peter,
You have confirmed my suspicions (i.e. MapBasic functionality not
available directly) *AND* supplied a cute workaround - or about as cute
as possible under the circumstances. As you point out, the problem of
never really knowing how many connections are open, or what the highest
numbered handle might be, is a nuisance. However your suggested
approach should do the trick.
Cheers,
David
Peter Horsbøll Møller wrote:
David,
The connections are number from 1 and up. So what you need to do is to check
each number from one until a connection isn't available or you can set a
minimum number of connections you want to check before assuming that there is
no more.
The "problem" is that MapInfo doesn't change the connection number. I call it a
problem here, but in general I'm glad that they keep the number.
The problem here is that you can have 3 connections open, but the first connection number can be 5, if you have closed the 4 first connections.
'****************************************************************************************************
Include "MapBasic.def"
Type T_CONNECTION_INFO
szDriverName As String
szDatabaseName As String
szSQLUserName As String
szDataSourceName As String
szQuoteChar As String
End Type
Declare Sub Main
Declare Function GetConnectionInfo(ByVal nConn As Integer, tcInfo As
T_CONNECTION_INFO) AS Logical
Sub Main
Dim nConn As Integer,
tcInfo As T_CONNECTION_INFO
For nConn = 1 To 2000
If GetConnectionInfo(nConn, tcInfo) Then
Print "Driver: " & tcInfo.szDriverName
& " Database: " & tcInfo.szDatabaseName
& " Username: " & tcInfo.szSQLUserName
& " Data Source: " & tcInfo.szDataSourceName
& " Quote Char: " & tcInfo.szQuoteChar
Else
'**No more conections ?
If nConn > 10 Then
'**If ConnectionNumber is larger than 10, I
guess there is no more connections ??
'**10 can be changed to any number
Exit For
End If
End if
tcInfo.szDriverName = ""
tcInfo.szDatabaseName = ""
tcInfo.szSQLUserName = ""
tcInfo.szDataSourceName = ""
tcInfo.szQuoteChar = ""
Next
End Sub
Function GetConnectionInfo(ByVal nConn As Integer, tcInfo As T_CONNECTION_INFO)
AS Logical
OnError GoTo NoConnection
GetConnectionInfo = FALSE
tcInfo.szDriverName = Server_ConnectInfo (nConn,
SRV_CONNECT_INFO_DRIVER_NAME)
tcInfo.szDatabaseName = Server_ConnectInfo (nConn,
SRV_CONNECT_INFO_DB_NAME)
tcInfo.szSQLUserName = Server_ConnectInfo (nConn,
SRV_CONNECT_INFO_SQL_USER_ID)
tcInfo.szDataSourceName = Server_ConnectInfo (nConn,
SRV_CONNECT_INFO_DS_NAME)
tcInfo.szQuoteChar = Server_ConnectInfo (nConn,
SRV_CONNECT_INFO_QUOTE_CHAR)
GetConnectionInfo = TRUE
Exit Function
'--------------------
NoConnection:
Print "Connection doesn't exist: " & nConn
& " Error: " & Error$()
End Function
'****************************************************************************************************
HTH,
Peter Horsbøll Møller
GIS Developer, MTM
Geographical Information & IT
COWI A/S
Odensevej 95
DK-5260 Odense S.
Denmark
Tel +45 6311 4900
Direct +45 6311 4908
Mob +45 5156 1045
Fax +45 6311 4949
E-mail [EMAIL PROTECTED]
http://www.cowi.dk/gis
COWI har fået ny hjemmeside. Ydelserne GIS og IT, kort, kortlægning, 3D
visualisering og arealforvaltning ligger under SAMFUND. Se mere her :
www.cowi.dk
COWI has changed its homepage. Our services within cadastre and
landadministration, geodataproducts, mapping and GIS can be seen under SOCIETY.
See our services here: www.cowi.com
-----Original Message-----
From: David Jerrard [mailto:[EMAIL PROTECTED]
Sent: Friday, October 07, 2005 4:08 AM
To: [email protected]
Subject: MI-L Server_ConnectInfo - What are my current connections?
Hi all,
I am writing MapBasic code to run in an environment where more than one Oracle Spatial
database connection may be current at any time. I would like to "interrogate"
those connections to see if a suitable connection already exists before prompting the
user to login (... again, and again, and again...).
The Server_ConnectInfo() function looks *ALMOST* like what I'm after. Once I
have a connection handle, I can find out what database it connects to, what
username was used to login, etc.
What I can't find is anything to tell me:
(a) How many existing connections exist, and
(b) What connection handles (integers) they use
Come to think of it, another nice-to-have would be a "test connection" option, as some of
these connections go "stale" if left overnight when a database backup takes place. But
that's another story...
Any assistance finding either the existing MapBasic functionality to do this,
or a cute workaround in its absence, would be greatly appreciated.
Cheers,
David Jerrard
---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com | To
unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 18166
---------------------------------------------------------------------
List hosting provided by Directions Magazine | www.directionsmag.com |
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
Message number: 18178