Click here to Skip to main content
15,893,644 members
Articles / Programming Languages / Visual Basic
Article

Using DataLinks to get or edit a connection string

Rate me:
Please Sign up or sign in to vote.
4.25/5 (17 votes)
9 Mar 2004 125.3K   1.6K   41   19
Accessing DataLinks from a .NET program to get or edit a connection string.

Sample Image - DataLinks.gif

Introduction

A similar article was written on this subject but this article deals with accessing DataLinks from a .NET program to get or edit a connection string. Your project must reference DataLinks and ADODB, then execute the PromptNew or PromptEdit methods.

Step by step procedure

  1. Reference ADODB in your project. This is required to read the COM object passed back from DataLinks. This file is located here: c:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll
  2. Reference DataLinks in your project. DataLinks used to be MSDASC.dll, but has changed to OLEDB32.DLL (see KB). This file is located here: C:\Program Files\Common Files\System\Ole DB\OLEDB32.DLL
  3. Create a text box and a button on a Windows Form. In the button's click event, use this code:
C#
private void ButtonGetConnectionString_Click(object sender, 
  System.EventArgs e)
{
   /* 
        Reference DataLinks
        NOTE: Reference 
              C:\Program Files\Common Files\System\Ole DB\OLEDB32.DLL
              (Was MSDASC.dll) 
        SEE:
           http://support.microsoft.com:80/support/kb/articles/Q225/1/32.asp
   */
      MSDASC.DataLinks dataLinks = new MSDASC.DataLinksClass();
      //note that a reference to: 
      //  c:\Program Files\Microsoft.NET\Primary Interop Assemblies\adodb.dll
      //is also required to read the ADODB._Connection result
      ADODB._Connection connection;                         
      //are we editing an existing connect string or getting a new one?
      if(this.txtConnectionString.Text==String.Empty)
      {     
            // get a new connection string
            try   
            {           
               //Prompt user for new connect string
               connection = (ADODB._Connection)dataLinks.PromptNew();
               //read result
               this.txtConnectionString.Text=
                    connection.ConnectionString.ToString();
            }
            catch(Exception ex)     
            {
                  MessageBox.Show(ex.ToString());     
            }
      }
      else
      {     
            // edit connection string
            connection=new ADODB.ConnectionClass();
            connection.ConnectionString=this.txtConnectionString.Text;
            //set local COM compatible data type
            object oConnection=connection;
            try   
            {     
                  //prompt user to edit the given connect string
                  if((bool)dataLinks.PromptEdit(ref oConnection))
                  {
                        this.txtConnectionString.Text=
                             connection.ConnectionString;
                  }
            }
            catch(Exception ex)
            {
                  MessageBox.Show(ex.ToString());     
            }
      }
}

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
Web Developer
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
Question64 / 32 bit drivers? Pin
richardbrigzy21-Sep-12 15:02
richardbrigzy21-Sep-12 15:02 
AnswerRe: 64 / 32 bit drivers? Pin
jonpetitta18-Aug-14 9:08
jonpetitta18-Aug-14 9:08 
GeneralProblem with the waitcursor Pin
PrimozPayton25-Aug-08 2:44
PrimozPayton25-Aug-08 2:44 
GeneralSqlClient Issue with Provider Property Pin
Brady Kelly28-Jul-07 23:07
Brady Kelly28-Jul-07 23:07 
I just found your code now after building a similar class last year. I was doing some Googling to clear up some issues and came across your article, and I thought I'd share an experience with you.

When editing ADO.NET SqlClient connection strings, that don;t include a "Provider=xxx;" part, on opening a connection the dialogue selects the default ODBC provider, where one is used to seeing the SQL Server Provider. I worked around this issue by adding a flag to my class, IsSqlServerProvider, that when set, automatically adds a Provider=SQLOLEDB.1;" to 'incoming' connection strings, so that the editor selects the correct provider for editing, and then removes this from 'outgoing' strings so that the SqlClient provider doesn't complain.

However, I had one problem I had to solve with a kludge: sometimes the editor added "Provider=SQLOLEDB;", without the ".1", so my stripping code missed it. I cannot find why it sometimes adds the ".1" and sometimes not, on the same server and same database, so for now I check for both in some rather smelly code.



GeneralNo need for interop Pin
Sergey Prokhorenko24-Jun-07 23:38
Sergey Prokhorenko24-Jun-07 23:38 
GeneralRe: No need for interop Pin
Sergey Prokhorenko24-Jun-07 23:42
Sergey Prokhorenko24-Jun-07 23:42 
GeneralRe: No need for interop Pin
Brady Kelly28-Jul-07 22:58
Brady Kelly28-Jul-07 22:58 
GeneralRe: No need for interop Pin
Member 871442120-Nov-13 4:10
Member 871442120-Nov-13 4:10 
GeneralSpeed Pin
akorolev103-Oct-04 0:24
akorolev103-Oct-04 0:24 
GeneralGreat! Give me exact what I am looking for Pin
zhoulhh1-Jul-04 7:39
zhoulhh1-Jul-04 7:39 
GeneralPromptEdit(ref connectionString) Pin
UnderEducated10-Mar-04 10:33
UnderEducated10-Mar-04 10:33 
GeneralRe: PromptEdit(ref connectionString) Pin
DanMayer10-Mar-04 10:55
DanMayer10-Mar-04 10:55 
GeneralRe: PromptEdit(ref connectionString) Pin
UnderEducated10-Mar-04 12:03
UnderEducated10-Mar-04 12:03 
GeneralRe: PromptEdit(ref connectionString) [modified] Pin
mlgray3-Jul-06 23:06
mlgray3-Jul-06 23:06 
GeneralRe: PromptEdit(ref connectionString) Pin
yetty200026-Oct-07 6:10
yetty200026-Oct-07 6:10 
GeneralRe: Very Slow... Pin
VHsu13-Feb-04 19:41
VHsu13-Feb-04 19:41 
GeneralRe: Very Slow... Pin
DanMayer14-Feb-04 6:45
DanMayer14-Feb-04 6:45 
GeneralRe: Very Slow... Pin
mgarins19-Feb-04 4:20
mgarins19-Feb-04 4:20 
GeneralRe: Very Slow... Pin
Ricardo Casquete17-Feb-06 23:55
Ricardo Casquete17-Feb-06 23:55 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.