ADO.NET: l'oggetto Command e il database

di: Riccardo Di Nuzzo     21 Gennaio 2005

L'oggetto command è utilizzato per effettuare operazioni sul database. Per collegarsi al database, ha bisogno di un oggetto connection che a sua volta andrà istanziato e/o valorizzato con una connection string valida.

Per utilizzare un command nel nostro codice è utile inserire un riferimento al namespace System.Data e un riferimento anche al dataprovider utilizzato a seconda del database prescelto. Se ad esempio utilizziamo Sql-Server il namespace da usare è System.Data.SqlClient, mentre se utilizziamo Access ci serviremo di tutti gli oggetti offerti dal namespace System.Data.OleDbClient.

Da notare come ogni namespace relativo ad un diverso dataprovider ci offre una serie di oggetti praticamente uguali (es. SqlClient.SqlCommand, OleDbClient.OleDbCommand, OracleClient.OracleCommand ecc.) oltre che nel nome anche nell'utilizzo. Di seguito useremo oggetti provenienti dal namespace SqlClient ma potrete facilmente adattarli anche agli altri dataprovider. Per importare i namespace di SqlServer possiamo scrivere in cima prima della dichiarazione della nostra classe:

VB.Net
Imports System.Data
Imports System.Data.SqlClient
C#
using System.Data;
using System.Data.SqlClient;

In questo modo possiamo fare riferimento direttamente agli oggetti all'interno del namespace SqlClient senza dover richiamare l'intero percorso System.Data.SqlClient.

Come detto l'oggetto command ci permette di interagire con il database. Per farlo, si utilizzano le sue funzioni ExecuteScalar, ExecuteNonQuery, ExecuteDatareader. In seguito approfondiremo una ad una queste funzioni e capiremo quando scegliere una piuttosto che l'altra. Da tenere presente che l'oggetto command ci permette di utilizzare nelle nostre query i parametri (per query si intende un codice che contiene i comandi sql per effettuare operazioni sul database la cui trattazione esula da questo articolo). L'argomento verrà approfondito nel seguito di questo articolo. Ma andiamo per ordine.

Per istanziare un oggetto command con l'oggetto connection e una query sql:

VB.Net
Dim m_conn As New SqlConnection("connectionstring")
Dim m_cmd As New SqlCommand("INSERT INTO Clienti (Nome, Cognome) VALUES ('Mario', ‘'Rossi')", m_conn)
C#
SqlConnection m_conn = new SqlConnection("connectionstring")
SqlCommand m_cmd = new SqlCommand("INSERT INTO Clienti (Nome, Cognome) VALUES ('Mario', ‘'Rossi')", m_conn);

Quando istanziamo un oggetto command, possiamo scegliere se passargli subito la query sql insieme ad un oggetto connection come nell'esempio appena fatto oppure istanziarlo prima per poi assegnare in un secondo momento la query e la connection come nell'esempio seguente:

VB.Net
Dim m_cmd As NewSqlCommand
m_cmd.Connection = m_conn
m_cmd.CommandText ="INSERT INTO Clienti (Nome, Cognome) VALUES ('Mario', ‘'Rossi')"
C#
SqlCommand m_cmd = new SqlCommand();
m_cmd.Connection = m_conn;
m_cmd.CommandText ="INSERT INTO Clienti (Nome, Cognome) VALUES ('Mario', 'Rossi')"

Da notare che se disponiamo già di un oggetto connection, potremo istanziare un oggetto command direttamente da questo. Esempio:

VB.Net
Dim m_cmd As SqlClient.SqlCommand = m_conn.CreateCommand
C#
SqlCommand m_cmd = m_conn.CreateCommand();

L'oggetto command ci offre come già anticipato una serie di funzioni utili per interagire con il database. Prima di vedere più in dettaglio le funzioni ExecuteNonQuery, ExecuteScalar e ExecuteReader è utile accennare alla proprietà CommandType. Questa proprietà ci consente di scegliere da tre possibilità.

Guide ASP.Net

Guida Windows Azure Code Snippets

Le migliori pratiche per far girare le applicazioni "in the cloud",...

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto