SQLConfigDataSource (odbccp32)
Last changed: http---joshuanorton.spaces.live.com-210.54.237.168

.
Summary
This function is used to work with the ODBC Datasources

C# Signature:

[DllImport("ODBCCP32.DLL",CharSet=CharSet.Unicode, SetLastError=true)]

static extern int SQLConfigDataSource (int hwndParent, int fRequest, string lpszDriver, string lpszAttributes);

VB Signature:

<DllImport("ODBCCP32.dll",CallingConvention:=CallingConvention.WinAPI,CharSet:=CharSet.Unicode,SetLastError:=True)> _

Public Shared Function SQLConfigDataSource(ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer

User-Defined Types:

fRequest:

ODBC_ADD_DSN

ODBC_CONFIG_DSN

ODBC_REMOVE_DSN

ODBC_ADD_SYS_DSN

ODBC_CONFIG_SYS_DSN

ODBC_REMOVE_SYS_DSN

ODBC_REMOVE_DEFAULT_DSN

More

lpszAttributes:

Supports Name value pairs.

More

Notes:

None.

Tips & Tricks:

Please add some!

Sample Code:

C#

public static bool CreateSQLDSN(string dsnName, string serverName, string dbName)

{

    string Driver;
    string attribs;
    Driver = "SQL Server";
    attribs = "SERVER=" + serverName + Convert.ToChar(0);
    attribs = attribs + "DESCRIPTION=Test DSN" + Convert.ToChar(0);
    attribs = attribs + "DSN=" + dsnName + Convert.ToChar(0);
    attribs = attribs + "DATABASE=" + dbName  + Convert.ToChar(0);
    attribs = attribs + "Trusted_Connection=yes"  + Convert.ToChar(0);
    int intRet = win32apis.SQLConfigDataSource(0, win32apis.ODBC_ADD_DSN, Driver, attribs);
    if (intRet == 1)
        return true;
    return false;

}

internal class win32apis

{

    internal const int ODBC_ADD_DSN = 1;    
    [DllImport("ODBCCP32.DLL",CharSet=CharSet.Unicode)]
    internal extern static int SQLConfigDataSource (int hwndParent, int fRequest, string lpszDriver, string lpszAttributes);

}

VB

Imports System

Imports System.Runtime.InteropServices

Imports System.Windows.Forms

Private Enum ODBC_Constants As Integer

    ODBC_ADD_DSN = 1
    ODBC_CONFIG_DSN
    ODBC_REMOVE_DSN
    ODBC_ADD_SYS_DSN
    ODBC_CONFIG_SYS_DSN
    ODBC_REMOVE_SYS_DSN
    ODBC_REMOVE_DEFAULT_DSN

End Enum

<DllImport("ODBCCP32.dll",CallingConvention:=CallingConvention.WinAPI,CharSet:=CharSet.Unicode,SetLastError:=True)> _

Private Shared Function SQLConfigDataSource(ByVal hwndParent As Integer, ByVal fRequest As Integer, ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer

Private Function CreateSystemDSN() As Boolean

    Dim vAttributes As String = "DSN=My DSN Name" & Convert.ToChar(0)
    vAttributes &= "Description=My DSN Description" & Convert.ToChar(0)
    vAttributes &= "Trusted_Connection=Yes" & Convert.ToChar(0)
    vAttributes &= "Server=SQLSERVERINSTANCE" & Convert.ToChar(0)
    vAttributes &= "Database=MyDatabaseName" & Convert.ToChar(0)

    If SQLConfigDataSource(0, ODBC_Constants.ODBC_ADD_SYS_DSN, "SQL Server", vAttributes) = 0 Then
        Messagebox.Show("Failed to create ODBC data source!!")
        Return False
    End If
    Return True

End Function

Alternative Managed API:

Do you know one? Please contribute it!

Documentation