Listing Available DSN / Drivers Installed

This code shows how to list the available DSN and Drivers installed on the computer.

screen-shot

The program works by utilizing the SQLDataSources API of the ODBC32.DLL.



private Declare Function SQLDataSources Lib "ODBC32.DLL" _
   (byval henv&, byval fDirection%, byval szDSN$, byval cbDSNMax%, _
   pcbDSN%, byval szDescription$, byval cbDescriptionMax%, _
   pcbDescription%) as Integer
'
private Declare Function SQLAllocEnv% Lib "ODBC32.DLL" (env&)
'
Const SQL_SUCCESS as Long = 0
Const SQL_FETCH_NEXT as Long = 1
'
Sub GetDSNsAndDrivers()
    Dim i as Integer
    Dim sDSNItem as string * 1024
    Dim sDRVItem as string * 1024
    Dim sDSN as string
    Dim sDRV as string
    Dim iDSNLen as Integer
    Dim iDRVLen as Integer
    Dim lHenv as Long         'handle to the environment

    on error resume next
    cboDSNList.AddItem "(None)"

    'get the DSNs
    If SQLAllocEnv(lHenv) <> -1 then
        Do Until i <> SQL_SUCCESS
            sDSNItem = Space$(1024)
            sDRVItem = Space$(1024)
            i = SQLDataSources(lHenv, SQL_FETCH_NEXT, sDSNItem, 1024, _
                iDSNLen, sDRVItem, 1024, iDRVLen)
            sDSN = Left$(sDSNItem, iDSNLen)
            sDRV = Left$(sDRVItem, iDRVLen)
                
            If sDSN <> Space(iDSNLen) then
                cboDSNList.AddItem sDSN
                cboDrivers.AddItem sDRV   '---optional - driver
                                          '--- value returned
            End If
        Loop
    End If
    'remove the dups
    If cboDSNList.ListCount > 0 then
        With cboDrivers
            If .ListCount > 1 then
                i = 0
                While i < .ListCount
                    If .List(i) = .List(i + 1) then
                        .RemoveItem (i)
                    else
                        i = i + 1
                    End If
                Wend
            End If
        End With
    End If
    cboDSNList.ListIndex = 0
End Sub
'

Download Demo Project (2k)



Comments

  • Wonderful

    Posted by Legacy on 12/23/2003 12:00am

    Originally posted by: Rosa

    it works at the first time! I would like also know how to get the odbc list when you select the dsn. I will invesigate.

    Reply
  • Useful one

    Posted by Legacy on 11/22/2003 12:00am

    Originally posted by: Rakesh Sharma

    This is the utility really needed to trace a computer (which is not yours), when you are supposed to work on it.
    This will tell you all the things in use and you just may use them.

    Reply
  • Worked perfect

    Posted by Legacy on 05/01/2003 12:00am

    Originally posted by: Greg Dirst

    Thanks

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Java developers know that testing code changes can be a huge pain, and waiting for an application to redeploy after a code fix can take an eternity. Wouldn't it be great if you could see your code changes immediately, fine-tune, debug, explore and deploy code without waiting for ages? In this white paper, find out how that's possible with a Java plugin that drastically changes the way you develop, test and run Java applications. Discover the advantages of this plugin, and the changes you can expect to see …

  • As a development and deployment platform, RHEL offers an efficient, scalable, and robust operating environment with certified security and flexible deployment options in physical and virtualized environments. To assess and quantify the business benefits of RHEL, IDC recently conducted in-depth interviews with IT staff members of 21 companies using RHEL servers. The organizations represent a broad range of industries and have an average of 22,700 employees. RHEL servers accounted for 23% of the servers …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds