Approccio ai database con VB.Net

Sia la precedente versione di Visual Basic che l’attuale permettono di progettare applicazioni complesse che interagiscono con basi di dati residenti sia in locale che in Rete Lan. Essendo prodotto Microsoft si interfaccia benissimo sia con DBMS (Data Base Management System – Software per la gestione di basi di dati) come Access, oppure SQL Server.

Tutti coloro i quali hanno utilizzato Visual Basic 6.0, conoscono bene il funzionamento della libreria Microsoft ActiveX Data Objects Library. Essa permette di connettersi a database:

  • con estensione mdb (Access)
  • con estensione mdf (SQL Server)
  • con appositi driver per Oracle e Mysql l’applicazione VB6 riuscirà a connettersi a database Oracle e a quello più famoso dell’area Open Source

Un esempio di utilizzo di questa libreria è reperibile sul mrwebmaster al seguente link:

Interazione di VB6 con i database

con l’avvento della tecnologia .Net la libreria in argomento si è evoluta a tal punto che è nato ADO.Net. Ado.Net permette l’interoperabilità tra piattaforme e l’accesso dati scalabile a qualsiasi tipologia di DBMS:

  • Access come sempre
  • SQL Server 2000/2005
  • c’è la libreria MySQLData, che contiene classi Ado.Net, le quali permettono di instaurare una connessione con il DBMS Open Source MySql
  • Oracle

Concludiamo questo paragrafo della guida con lo stesso esempio reperibile a quel link, ma utilizzando le classi Ado.Net commentate in forma breve.

La scalabilità di ADO.Net con altre piattaforme è possibile in quanto integra la trasformazione di basi di dati in formato XML (Exensible Markup Language).

Con la classe Connection di Ado.Net potremmo instaurare la connessione ad una base dati utilizzando un determinato Provider dati, il quale prende il nome del DBMS utilizzato:

  • le connessioni a database per i quali esiste un Provider OLEDB, sarà OledbConnection
  • la connessione ad un database di tipo SQL Server avviene con il provider SQLClient, e la classe connection si chiama SQLConnection
  • per connettersi a database di tipo MySQL, esiste la libreria MySQLData e la classe Connection si chiama MySQLConnection

Con la classe Command potremmo eseguire azioni sulla base dati espresse attraverso comandi del linguaggio SQL (Structured Query Language). Per i rispettivi Provider Dati elencati prima avremo:

  • OledbCommand per provider dati OLEDB, utilizzato per connettersi a database tipo Access
  • SqlCommand per eseguire azioni su database di tipo SQL Server
  • MySqlCommand per eseguire azioni su database di MySql

Per leggere un recordset (una tabella o una query), come eravamo soliti fare con applicazioni VB6, esiste, per Ado.Net la classe DataReader. Per ogni provider Dati a questa classe si antepone:

  • suffisso oledb per provider OLEDB; diventa cosi OledbDataReader
  • Sql per database di tipo SQL Server; diventa SqlDataReader
  • MySql per database di MySql; diventa così MySqlDataReader

Introdotte brevemente queste classi, le applicheremo ad un esempio di tabella memorizzata in un DBMS tipo Access.

Ammettiamo di avere due informazioni (tipo cognome e nome) acquisiti dall’utente, informazioni acquisite attraverso questo form:

in Sharp Developer per poter creare un form dovremmo all’avvio scegliere Windows Application e il linguaggio deve essere selezionato su VB.Net: basta che dalla pagina iniziale si clicca sul pulsante nuova soluzione.

Salviamo il progetto in questo modo:

File / Salva con nome

nella cartella test da creare sotto il drive c:

c:\test

all’interno di questa cartella troveremo tutti i file di progetto creati automaticamente dall’ambiente di sviluppo utilizzato.

Sempre nella stessa cartella creeremo in Access un database prova.mdb con la tabella prova costituita dai seguenti campi:

  • id (contatore)
  • Cognome testo
  • Nome testo

appena completata questa operazione in Microsoft Access, ritorniamo al progetto e facciamo doppio clic sul bottone Inserisci; si apre la finestra di codice:

Sub Cmd_inserisci_dbClick(ByVal sender As Object, ByVal e As EventArgs)

End Sub

all’interno di quella routine bisognerà inserire il codice per automatizzare l’inserimento, dei dati immessi nel form, all’interno del database creato in Access. Vi ricordo di utilizzare la direttiva Imports al fine di aggiungere un riferimento al provider Oledb della classe del Framework System.Data.

Sempre all’interno della stessa finestra di codice, prima di Public Partial Class….. occorrerà inserire:

Imports System.Data.Oledb

ritornando al codice per automatizzare l’inserimento nella base dati, avremo:

Dim objconn As OleDbConnection 
Dim stringaconn As String 
Dim stringasql As String 
Dim objcomm As OleDbCommand 
stringaconn="Provider=Microsoft.JET.OLEDB.4.0;Data Source=" 
stringaconn=stringaconn & "c:\test\prova.mdb"
objconn=New OleDbConnection(stringaconn)
objconn.Open()
stringasql="Insert into prova(cognome,nome) values('"
stringasql=stringasql & Me.txt_cognome.Text & "'" & ","
stringasql=stringasql & "'" & me.txt_nome.Text & "'" & ")"
objcomm=New OleDbCommand(stringasql,objconn)
Dim risputente As Integer 
try
risputente=objcomm.ExecuteNonQuery()
If risputente=1 Then
 msgbox("Inserimento effettuato con successo")
 objconn.Close()
 Me.txt_cognome.Text=""
 Me.txt_nome.Text=""
 Me.txt_cognome.Focus()
End If
 Catch es As Exception
 msgbox("Errore: il campo cognome e/o nome sono vuoti")
 objconn.Close()
end try

commenti:

  • dichiariamo la variabile objconn di tipo OledbConnection (la classe per configurare la connessione alla base dati Access)
  • dichiariamo la variabile stringaconn di tipo stringa per memorizzare la la stringa di connessione da passare all’oggetto Oledbconnection
  • dichiariamo la variabile stringasql di tipo stringa per memorizzare concatenando l’istruzione SQL Insert into…
  • dichiariamo la variabile objcomm di tipo OledbCommand per configurare l’azione da eseguire sulla base dati alla quale ci siamo connessi

per inizializzare l’oggetto OledbConnection si utilizza la riga di codice:

stringaconn="Provider=Microsoft.JET.OLEDB.4.0;Data Source="
stringaconn=stringaconn & "c:\test\prova.mdb"
objconn=New OledbConnection(stringaconn)
objconn.Open()

per eseguire l’azione Sql sul database avremo:

stringasql="Insert into prova(cognome,nome) values('"
stringasql=stringasql & me.txt_cognome.text & "'" & ","
stringasql=stringasql & "'" & me.txt_nome.text & "'" & ")"

objcomm=New OledbCommand(stringasql,objconn)
...

con il metodo ExecuteNonQuery viene eseguita l’azione sql definita dalla variabile stringasql. Se tutto va a buon fine sarà restituito 1 e memorizzato nella variabile risputente.

Con un costrutto if verifichiamo che viene restituito quel valore ed eseguiremo le seguenti istruzioni:

  • visualizzazione messaggio all’utente “Inserimento effettuato con successo” per mezzo dell’istruzione MsgBox
  • chiudiamo la connessione
  • puliamo le due caselle di testo del form
  • riportiamo, con il metodo Focus lo stato attivo del controllo sulla casella cognome

a run-time avremo:

clicchiamo sul pulsante di comando inserisci e verrà visualizzato questo messaggio, nell’ipotesi l’inserimento, dei dati nel db, vada a buon fine:

aprendo il database di access prova.mdb avremo:

Al fine di gestire il comportamento dell’utente, e nella fattispecie ammettendo che lo stesso non compili i controlli del form e prema ugualmente il pulsante inserisci, ho inserito le istruzioni che eseguono l’azione Sql sul database, all’interno del costrutto Try…. Catch, di modo chè a run-time verrà gestito l’errore personalizzato e non quello del framework che farà bloccare l’esecuzione dell’applicazione stessa.

Siamo giunti al termine di questa guida che vi ha delineato i riferimenti essenziali del linguaggio Visual Basic.Net. Vi accorgerete che, al termine della lettura dell’intera guida, sarete stimolati a chiedere maggiori approfondimenti. Questi maggiori approfondimenti speriamo che si concretizzano in un corso completo dove si potranno approfondire:

  • i riferimenti del linguaggio oltre quelli mensionati nella guida stessa
  • l’interazione con i database che non si esaurisce nel piccolo esempio esplicativo mostrato al fine di capire in linea di massima il funzionamento di Ado.Net
  • le diverse tipologie di applicazioni realizzabili con Visual Basic.Net
Both comments and pings are currently closed.

Comments are closed.