mercoledì 7 marzo 2007

Realizzare una connessione DSN di sistema con .NET

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.
L'esempio seguente illustrerà come è 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:
-------------------------------------------
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":
-------------------------------------------
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:
-------------------------------------------
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

Nessun commento: