Tra le varie procedure di connessione ad un Database esiste la connessione tramite DSN
o meglio
Data Source Name.
In .Net si possono realizzare connessioni DSN di sistema con notevole semplicità ovviamente sfruttando il driver ODBC.(consiglio la vers. 3.51) e, tramite l'uso di un' API di Windows.
In questo esempio vi farò vedere com'è possibile realizzare direttamente da una WinForm una connessione Dsn:
Innanzitutto construiamo una form come da figura:
Una volta terminata la realizzazione della form con i relativi campi necessari per l'input dei dati andiamo a dichiarare in un modulo l'APi di windows ed alcune constanti indispensabili per la creazione del Dsn:
Listato n°1
Module Module1
Public Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal
hwndParent As Integer, ByVal fRequest As Short, ByVal lpszDriver As
String, ByVal lpszAttributes As String) As Integer
Public Declare
Function SQLCreateDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As
Integer, ByVal lpszDSN As String) As Integer
Public Const ODBC_ADD_DSN As Short = 1
Public Const ODBC_ADD_SYS_DSN As Short = 4
End Module
Fatto questo possiamo scrivere il seguente codice all'interno del pulsante "Conferma attivazione":
Listato n°2
Private Sub Conferma_Click(ByVal
sender As System.Object, ByVal e As System.EventArgs)
Handles Conferma.Click
Dim odbcs As String
Dim RISULTATO As Integer
If WizardCheck.CheckState = System.Windows.Forms.CheckState.Checked
Then odbcs = NomeDSN.Text
RISULTATO = SQLCreateDataSource(Me.Handle.ToInt32, odbcs)
Else
odbcs = "DSN=" + NomeDSN.Text + ";"
odbcs = odbcs + "DBQ=" + PathDB.Text + ";"
odbcs = odbcs + "DESCRIPTION=" + Descrizione.Text +";"
odbcs = odbcs + "UID=" + Utente.Text +";"
odbcs = odbcs + "PWD=" + Password.Text +";"
odbcs = odbcs + "DATABASE=" + DatabasePred.Text +";"
odbcs = odbcs + vbNullChar
If _TipoDSN_1.Checked =
True Then RISULTATO = SQLConfigDataSource(0, ODBC_ADD_SYS_DSN, NomeDriver.Text, odbcs)
End If
End If
If RISULTATO <> 0
Then MsgBox("Creazione DSN riuscita con successo")
Else
MsgBox("Creazione DSN fallita?)
Me.Close()
End If
End Sub
Se la creazione manuale del DSN è troppo complicata, potrete anche
avviare lo Wizard (interfaccia guidata) ma saranno necessarie alcune
righe aggiuntive di codice:
Listato n°3
Private Sub WizardCheck_CheckStateChanged(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs)
Handles WizardCheck.CheckStateChanged
Dim STATO As Boolean
STATO = (WizardCheck.CheckState = System.Windows.Forms.CheckState.Unchecked)
ParametriFrame.Enabled = STATO
NomeDriverLabel.Enabled = STATO
NomeDriver.Enabled = STATO
PathDBLabel.Enabled = STATO
PathDB.Enabled = STATO
DescrizioneLabel.Enabled = STATO
Descrizione.Enabled = STATO
UtenteLabel.Enabled = STATO
Utente.Enabled = STATO
PasswordLabel.Enabled = STATO
Password.Enabled = STATO
DatabasePredLabel.Enabled = STATO
DatabasePred.Enabled = STATO
_TipoDSN_1.Enabled = STATO
End Sub
Lanciando la nostra applicazione d'esempio e compilando i campi con i relativi dati ,se la procedura verrà
eseguita correttamente un messaggio lo confermerà.
Una prova del nove potrete farla verificando dal pannello di controllo l'effettiva creazione del Dsn di sistema