mercoledì 8 giugno 2022

C# Utilizzo del database DB2 in Net 6 : Parte 2 - Stesura del codice per operazioni CRUD


Riprendiamo l’articolo sull’utilizzo del database DB 2 tramite l’ultima versione di OleDB e con l’ambiente di sviluppo Visual Studio 2022 Community.
In questa seconda ed ultima parte, vedremo come scrivere il codice con il linguaggio di programmazione C# per le operazioni sulle tabelle, quali inserimento, lettura, aggiornamento e cancellazione dei dati.

Creazione di progetto

Si crea un progetto di tipo app Windows forms, selezionando come versione del Framework 6.
Dopo aver creato il progetto, aggiungere un controllo di tipo Datagrid, con il quale visualizzare i dati, il quale controllo avrà impostato la proprietà “Name” con il valore “DtgDati” tre pulsante, uno con la proprietà “Name” impostata su “BtnUpdate” e la proprietà “Text” su “Aggiorna”, un pulsante con la proprietà “Name” impostata su “BtnCancella” e la proprietà “Text” impostata su “Cancella”, ed infine l’ultimo pulsante, con la proprietà “Name” impostata su “BtnInsert” e la proprietà “Text” su “Inserisci”, il tutto dev’essere come in figura 1.


Figura 1 – la form con i vari controlli


Ora non resta che aggiungere le classi per la gestione dei dati per il database DB2, tramite Nuget, aggiungiamo l’ultima versione di “System.Data.OleDb” che nel momento in cui stiamo scrivendo è la 6.0.0.

Il tutto come in figura 2.

Figura 2 - L’aggiunta di OleDB

Dopo aver aggiunto la gestione dei dati tramite OleDB, non resta che scrivere il codice per la gestione del database.

Dopo aver creato la tabella “Anagrafica”, dobbiamo caricare i dati nel load della form, per far ciò, facciamo doppio click sulla form, in modo di passare nell’evento “Load” della nostra form.
In alto sopra ad ogni dichiarazione dobbiamo scrivere lo spazio dei nomi per utilizzare alcune classi, di seguito la dichiarazione del namespace oledb.


C#

using System.Configuration;

using System.Data;

using System.Data.OleDb;



Abbiamo aggiunto anche lo spazio dei nomi per la gestione dei dati e dei file di configurazione.
Premessa, nel progetto va aggiunto un file di configurazione (app.config) il quale contiene le informazioni del nostro server DB, qui di seguito un esempio di app.config, in particolar modo della stringa di connessione alla fonte dati.



informazioni del nostro server DB, qui di seguito un esempio di app.config.

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

      <connectionStrings>

            <add name="DB2" connectionString="Provider=DB2OLEDB; Persist Security Info = False; User ID = NomeUtente; Password = Password; Initial Catalog = Database; Data Source = Database; APPC Mode Name = IBMRDB; Network Transport Library = TCPIP; Network Address = NomeServer; Network Port = 5025; Package Collection = Nome; Default Schema = NomeSchema; DEFER PREPARE = true;"/>

           

      </connectionStrings>

</configuration>


Ritorniamo nell'evento load della form, e scriviamo il codice per il caricamento dei dati presenti nella base dati DB2 e da visualizzare nel controllo DatagridView.
Qui di seguito il frammento di codice delle suddette operazioni.




private void Form1_Load(object sender, EventArgs e)

        {

 

             

            using (var connOleDB2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["DB2"].ConnectionString))

            {

                using (var cmdOleDB2 = new OleDbCommand())

                {

                    connOleDB2.Open();

                    cmdOleDB2.CommandType = CommandType.Text;

                    cmdOleDB2.CommandText = "SELECT Nome, Cognome FROM Schema.Anagrafica";

                    cmdOleDB2.Connection = connOleDB2;

                    try

                    {

 

 

                        var risultatoReader = cmdOleDB2.ExecuteReader();

                        DataTable dati = new DataTable();

                        dati.Load(risultatoReader);

                        DtgDati.DataSource = dati;

                    }

                    catch (Exception ex)

                    {

                        MessageBox.Show("Errore: " + ex.Message);

                    }

                }

            }

 

 

 

        }




Passiamo in visualizzazione grafica, e facciamo doppio click sul pulsante “Aggiorna” in modo da passare in visualizzazione codice per l’evento click del pulsante.
Nel pulsante scriviamo il codice per aggiornare i dati, qui di seguito il frammento di codice di tale dichiarazione.


C#

  private void BtnUpdate_Click(object sender, EventArgs e)

        {

            using (var connOleDB2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["DB2"].ConnectionString))

            {

                using (var cmdOleDB2 = new OleDbCommand())

                {

                    connOleDB2.Open();

                    cmdOleDB2.CommandType = CommandType.Text;

                    cmdOleDB2.CommandText = "update Schema.Anagrafica set Cognome = 'test', Nome = 'test2' where ID = 5";

                    cmdOleDB2.Connection = connOleDB2;

                    try

                    {

 

 

                        var risultatoReader = cmdOleDB2.ExecuteNonQuery();

                        MessageBox.Show("Record aggiornati: " + risultatoReader);

 

                    }

                    catch (Exception ex)

                    {

                        MessageBox.Show("Errore: " + ex.Message);

                    }

                }

            }

           

 

 

        }

Ora non resta che ritornare il visualizzazione grafica e facciamo doppio click sul pulsante “Cancella”, in modo di passare all’evento click del pulsante per la cancellazione.

Sempre con le classi “OleDB” dopo aver effettuato la connessione alla fonte dati, eseguiamo il comando di eliminazione dei dati, questo avviene sempre con la classe OledbCommand.

C#

private void BtnCancella_Click(object sender, EventArgs e)

        {

            using (var connOleDB2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["DB2"].ConnectionString))

            {

                using (var cmdOleDB2 = new OleDbCommand())

                {

                    connOleDB2.Open();

                    cmdOleDB2.CommandType = CommandType.Text;

                    cmdOleDB2.CommandText = "DELETE Schema.Anagrafica where ID = 5";

                    cmdOleDB2.Connection = connOleDB2;

                    try

                    {

 

 

                        var risultatoReader = cmdOleDB2.ExecuteNonQuery();

                        MessageBox.Show("Record Cancellati: " + risultatoReader);

 

                    }

                    catch (Exception ex)

                    {

                        MessageBox.Show("Errore: " + ex.Message);

                    }

                }

            }

        }


Siamo giunti all’ultimo frammento di codice, quello relativo all’inserimento dei dati, passiamo in visualizzazione grafica, e facciamo doppio click sul pulsante “Inserisci”, in modo da passare in visualizzazione codice nell’evento click del pulsante.

Di seguito il codice per l’inserimento di un record nella tabella Anagrafica.


private void BtnInsert_Click(object sender, EventArgs e)

        {

             using (var connOleDB2 = new OleDbConnection(ConfigurationManager.ConnectionStrings["DB2"].ConnectionString))

            {

                using (var cmdOleDB2 = new OleDbCommand())

                {

                    connOleDB2.Open();

                    cmdOleDB2.CommandType = CommandType.Text;

                    cmdOleDB2.CommandText = "INSERT INTO Schema.Anagrafica  (Nome, Cognome) VALUES(‘Emanuele’, ‘Mattei’)";

                    cmdOleDB2.Connection = connOleDB2;

                    try

                    {

 

 

                        var risultatoReader = cmdOleDB2.ExecuteNonQuery();

                        MessageBox.Show("Record Inseriti: " + risultatoReader);

 

                    }

                    catch (Exception ex)

                    {

                        MessageBox.Show("Errore: " + ex.Message);

                    }

                }

            }

        }






Ora non resta che provare ad avviare il nostro applicativo e se la connessione alla base dati, ed il codice è corretto verranno eseguite le varie operazioni.

Conclusioni

Per chi ha già utilizzato le classi Oledb per gestire altri database non troverà difficoltà nello sviluppare applicazioni che fanno uso del database DB2, visto che le classi ed il loro utilizzo è uguale ad altri tipi di database.
E’ importante aver installato il provvider per la gestione del database DB2, che di solito avviene quando si installa Visual Studio 2022 o altre versioni.
Inoltre i dati di connessione sono fondamentali, occorre sapere nome database, server e tante altre informazioni da inserire nella stringa di connessione, che possono essere forniti dal DBA aziendale.

L'articolo ha voluto fornire al lettore una panoramica sull'utilizzo del database DB2 con le operazioni più comuni, utilizzando le classi messe a disposizione dello spazio dei nomi OLEDB. Le classi per la gestione dei dati, sono oleDBConnection, che permette la gestione della connession al database, che tramite il metodo "Open" è possibile avviare operazioni sul database stesso. Mentre la classe OledbCommand, permette di esguire le operazioni sulel tabelle, operazioni CRUD, impostando le varie proprietà, quale il tpo di query (testo per la proprietà Text) l'istruzione SQL da inserire nella proprietà CommandText,. ed impostare il riferimento al database tramite la proprietà Connection.

Nessun commento: