Connessione a un database ed esecuzione di un comando mediante ADO.NET 2005 e Visual C# 2005 o ADO.NET e Visual C# .NET

Traduzione articoli Traduzione articoli
Identificativo articolo: 306636 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo è stato precedentemente pubblicato con il codice di riferimento I306636
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene mostrato nel dettaglio come utilizzare ADO.NET 2005 o ADO.NET per connettersi a un database ed eseguire un comando.

Requisiti

Nell'elenco che segue sono indicati l'hardware, il software, l'infrastruttura di rete e i service pack necessari:
  • Microsoft Windows Server 2003, Microsoft Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server o Microsoft Windows NT 4.0 Server
  • Microsoft Visual Studio 2005 o Microsoft Visual Studio .NET
In questo articolo si presume la conoscenza dei seguenti argomenti:
  • Terminologia di database
  • Linguaggio SQL (Structured Query Language)

Come eseguire un comando

I comandi di database vengono eseguiti per effettuare operazioni con gli archivi di dati e comprendono tutte le istruzioni utilizzabili con un database. È possibile utilizzare la classe OleDbCommand o SqlCommand per ottenere un comando per l'archivio dati. Inoltre, OleDbCommand può essere una classe specifica per l'archivio dati. In questo articolo viene descritto l'utilizzo delle classi SqlClient (per connettersi a un computer che esegue Microsoft SQL Server) e OleDb (per i database per i quali è disponibile un driver OLE DB o ODBC) all'interno di ADO.NET. Tuttavia, il codice è in genere lo stesso per entrambe.

Con ADO è possibile emettere comandi tramite l'oggetto Command, Connection o Recordset. In ADO.NET, invece, solo gli oggetti Command (SqlCommand o OleDbCommand) eseguono i comandi.

Per eseguire un comando attenersi alla seguente procedura:
  1. Attenersi alla procedura seguente per creare una nuova applicazione console in Microsoft Visual C# 2005 o in Microsoft Visual C# .NET:
    1. Avviare Microsoft Visual Studio 2005 o Microsoft Visual Studio .NET.
    2. Scegliere Nuovo dal menu File, quindi fare clic su Progetto.
    3. Nella finestra di dialogo Nuovo progetto fare clic su Progetti di Visual C# in Tipi progetto, quindi fare clic su Applicazione console in Modelli.

      Nota In Visual Studio 2005, fare clic su Visual C# in Tipi progetto all'interno della finestra di dialogo Nuovo progetto, quindi scegliere Applicazione console in Modelli.
  2. Verificare che il progetto contenga un riferimento allo spazio dei nomi System.Data; qualora il riferimento non fosse presente, aggiungerlo.
  3. Utilizzare l'istruzione using per gli spazi dei nomi System e System.Data in modo che non sia necessario qualificare le dichiarazioni nel codice successivamente. Inoltre è possibile includere System.Data.SqlClient o System.Data.OleDb, a seconda di quale spazio dei nomi si sta utilizzando.
    using System;
    using System.Data;
    using System.Data.SqlClient;
    					
  4. È necessaria una stringa di connessione per poter creare una connessione al database. Le stringhe di connessione contengono tutte le informazioni necessarie per stabilire una connessione al database, inclusi il nome del server, il nome del database, l'ID utente e la password. Ad esempio, la stringa di connessione seguente fa riferimento a un computer locale che esegue SQL Server:

    Per le connessioni OleDb:

    Nota L'<UID> dell'ID utente deve disporre delle appropriate autorizzazioni per eseguire queste operazioni sul database.
    Provider=SQLOLEDB.1;User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    						
    Per le connessioni SqlClient:
    User ID=<UID>;Initial Catalog=pubs;Data Source=(local)
    						
    Nota Se occorrono maggiori informazioni per determinare la stringa di connessione per il database, cercare "ConnectionString" nel sito Web Microsoft MSDN all'indirizzo (informazioni in lingua inglese):
    http://search.microsoft.com/us/dev/default.asp
  5. Viene creata una classe static e una procedura Main() vuota. Dichiarare una variabile di stringa e memorizzare la stringa di connessione corretta per il database in tale procedura.

    Nota L'<UID> dell'ID utente deve disporre delle appropriate autorizzazioni per eseguire queste operazioni sul database.
    class Class1
    {
    	static void Main(string[] args)
    	{
    		string sConnectionString = 
    "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
    	}
    }
    					
  6. Mediante questa stringa di connessione creare un nuovo oggetto OleDbConnection o SqlConnection, quindi chiamarne il metodo Open per stabilire una connessione al database:
    SqlConnection objConn = new SqlConnection(sConnectionString);
    objConn.Open();
    					
  7. Creare un oggetto SqlCommand o OleDbCommand e passare il comando che si desidera eseguire unitamente all'oggetto connessione creato nel passaggio precedente. Il codice di esempio riportato di seguito passa l'istruzione INSERT:
    string sSQL = "INSERT INTO Employee " + 
      "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
      "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
    SqlCommand objCmd = new SqlCommand(sSQL,objConn);
    					
  8. Dopo avere creato l'oggetto SqlCommand o OleDbCommand, è possibile chiamare il metodo ExecuteNonQuery per eseguire il comando che esso rappresenta. ExecuteNonQuery è progettato per comandi che non restituiscono risultati, ad esempio le istruzioni DELETE, UPDATE e INSERT. Se l'istruzione viene eseguita senza restituire eccezioni (vedere il codice seguente), il comando di database è stato eseguito correttamente.
    objCmd.ExecuteNonQuery();
    					
  9. Salvare il progetto. Scegliere Avvia dal menu Debug per eseguire il comando sul database.

Come utilizzare i parametri

Quando si eseguono comandi su un database, ad esempio le istruzioni UPDATE, INSERT e DELETE o le chiamate alle stored procedure, tali comandi sono spesso accompagnati da parametri. Ciò consente di creare il comando una sola volta ma di eseguirlo più volte con valori diversi che vengono inseriti al posto dei parametri. Si consideri l'istruzione DELETE corrispondente all'istruzione INSERT utilizzata nella sezione precedente:
string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id"
				
Il nome del parametro ("@emp_id") in questa istruzione DELETE rappresenta un parametro sostituibile con vari valori ogni volta che il comando viene eseguito.

Per utilizzare parametri con i comandi, attenersi alla seguente procedura:
  1. Creare l'oggetto OleDbConnection o SqlConnection come indicato nella sezione "Come eseguire un comando".
  2. Sostituire i valori con segnaposti, ad esempio "@emp_id" o "@fname", in modo che nel testo del comando vengano impiegati dei parametri. Per un esempio, vedere l'istruzione DELETE prima di questa procedura.
  3. Creare l'oggetto OleDbCommand o SqlCommand e passare l'oggetto connessione creato durante il primo passaggio, oltre al testo del comando contenente i segnaposti dei parametri.
  4. Per ogni parametro aggiungere un oggetto parametro nell'insieme dei parametri dell'oggetto comando. Per ogni parametro occorre specificare un nome e un tipo di dati.
    objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
    					
  5. Per le stored procedure possono esservi parametri che restituiscono valori e parametri di output. Occorre inoltre impostare un valore per ogni parametro di input prima di poter eseguire la query:
    objCmd.Parameters["@emp_id"].Value = "MSD12923F";
    					
  6. Eseguire la query come mostrato di seguito:
    try 
    {
    	objCmd.ExecuteNonQuery();
    }
    catch (System.Exception e) 
    {
    	Console.WriteLine(e.Message);
    }
    Console.WriteLine("Record Deleted");
    					

Elenco completo del codice

Nota Prima di eseguire il codice, è necessario modificare ID Utente =<UID> impostandolo sui valori corretti. Assicurarsi che <UID> disponga delle autorizzazioni appropriate per effettuare questa operazione nel database
using System;
using System.Data;
using System.Data.SqlClient;

    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
	static void Main(string[] args)
	{
		AddRecord();
		RemoveRecord();
		Pause();
	}

	static void Pause()
	{
		Console.WriteLine("Press Enter To Continue....");
		Console.ReadLine();
	}

	static void AddRecord()
	{
		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "INSERT INTO Employee " + 
		  "(emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date) " + 
	          "VALUES ('MSD12923F', 'Duncan', 'W', 'Mackenzie', 10, 82,'0877','2001-01-01')";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		try 
		{
			objCmd.ExecuteNonQuery();
			}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Record Added");
	}

	static void RemoveRecord()
	{
		string sConnectionString = "User ID=<UID>;Initial Catalog=pubs;Data Source=(local)";
		SqlConnection objConn = new SqlConnection(sConnectionString);
		objConn.Open();
		string sSQL = "DELETE FROM Employee WHERE emp_id = @emp_id";
		SqlCommand objCmd = new SqlCommand(sSQL,objConn);
		objCmd.Parameters.Add("@emp_id", SqlDbType.Char, 9);
		objCmd.Parameters["@emp_id"].Value = "MSD12923F";
		try 
		{
			objCmd.ExecuteNonQuery();
		}
		catch (System.Exception e) 
		{
			Console.WriteLine(e.Message);
		}
		Console.WriteLine("Record Deleted");
	}
} 
				

Riferimenti

Per ulteriori informazioni sull'utilizzo di ADO.NET, sui comandi di database e sulle stored procedure, vedere i seguenti siti Web Microsoft (informazioni in lingua inglese):
SQL Server 2000 Stored Procedures
http://msdn2.microsoft.com/en-us/library/Aa214299(SQL.80).aspx

ADO.NET for the ADO Programmer
http://msdn2.microsoft.com/en-us/library/ms973217.aspx

MSDN Online .NET Developer Center
http://msdn.microsoft.com/net
Per ulteriori informazioni, consultare il seguente libro:
Sharp, John & Jon Jagger. Microsoft Visual C# .NET Step by Step. Microsoft Press, 2003.
Per ulteriori informazioni, vedere il seguente corso Microsoft Training & Certification:
2389 Programming with ADO.NET
http://www.microsoft.com/learning/syllabi/en-us/2389Bfinal.mspx

Proprietà

Identificativo articolo: 306636 - Ultima modifica: venerdì 17 agosto 2007 - Revisione: 4.5
Le informazioni in questo articolo si applicano a
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# 2005
Chiavi: 
kbhowtomaster kbsqlclient kbsystemdata KB306636
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com