Home Page Home Page Tips & Tricks Come creare una connessione DSN di sistema con .NET ?

Come creare una connessione DSN di sistema con .NET ?


Se utilizziamo nel nostro progetto una base dati potremo connetterci usando il driver OLEDB oppure il driver ODBC. Se usiamo quest'ultimo possiamo anche creare un DSN di sistema. DSN è l'acronimo di Data Source Name ed è un modo semplice per descrivere come connettersi alla base dati (il nostro database) usando appunto il driver ODBC.
La comodità è che se spostiamo il Database o modifichiamo password o nome utente per fare funzionare l'applicazione sarà necessario modificare semplicemente il DSN dal pannello di controllo.
Questo Tip vi farà capire come è possibile con .NET, tramite l'uso di una API di Win32 creare una connessione DSN direttamente dalla vostra applicazione WinForm.

Procediamo quindi con la creazione del progetto. Abbiamo bisogno di una form che struttureremo in questo modo:

1) Dei campi Textbox che ci permetteranno di inserire i dati di Input
2) Un Checkbox o un Radiobutton che ci permetteranno di stabilire che il DSN è di Sistema e non un Dsn su file e se si vuole procedere con la connessione ad interfaccia guidata.
3) Un Pulsante Button che confermerà i dati inseriti e un pulsante che servirà per chiudere la Form di lavoro.

Vedi figura:



Come si può vedere dalla figura ci sono diversi campi dati, andando in ordine di visualizzazione, troviamo il campo in cui bisogna inserire il nome del DSN da creare, poi di seguito vengono elencati i parametri per la sua creazione:

A) Nome del Driver che viene utilizzato
B) Percorso del Database
C) Descrizione del DSN
D) Nome Utente e Passoword
E) Nome del database

Una volta che la nostra form è stata progettata, non bisogna fare altro che andare a scrivere il codice.
Innanzitutto si deve aggiungere al progetto un modulo al cui interno andiamo a dichiarare le funzioni API e alcune costanti necessarie per la creazione del DSN di sistema:

Codice .NET 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


Dopo questa operazione procediamo scrivendo il codice collegato al pulsante Conferma:

Codice .NET 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:

Codice .NET 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




Lanciamo la nostra applicazione d'esempio, compiliamo correttamente i campi e premiamo sul pulsante per la creazione. Se la procedura viene eseguita correttamente avrete un messaggio di conferma. Potrete quindi verificare dal pannello di controllo se è stata effettivamente creata:


Copyright © dotNetHell.it 2002-2018
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5