Avvio rapido: usare .NET (C#) per eseguire query su un database

Si applica a: Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics

In questa guida di avvio rapido si useranno .NET e il codice C# per la connessione a un database. Si eseguirà quindi un'istruzione Transact-SQL per eseguire query sui dati. Questa guida introduttiva è applicabile a Windows, Linux e macOS, e sfrutta la piattaforma .NET unificata.

Suggerimento

Questo modulo gratuito di Learn contiene informazioni su come Sviluppare e configurare un'applicazione ASP.NET che esegue query su un database SQL di Azure.

Prerequisiti

Per completare l'esercitazione introduttiva, sono necessari gli elementi seguenti:

Creare un nuovo progetto .NET

  1. Aprire un prompt dei comandi e creare una cartella denominata sqltest. Passare a questa cartella ed eseguire questo comando.

    dotnet new console
    

    Vengono creati nuovi file di progetto dell'app, inclusi un iniziale file di codice C# (Program.cs), un file di configurazione XML (sqltest. csproj) e i file binari necessari.

  2. Nel prompt dei comandi di cui sopra eseguire questo comando:

    dotnet add package Microsoft.Data.SqlClient
    

    Questo comando aggiunge il pacchetto Microsoft.Data.SqlClient al progetto.

Inserire il codice per eseguire query sul database nel database SQL di Azure

  1. In un editor di testo, ad esempio Visual Studio Code, aprire Program.cs.

  2. Sostituire il contenuto con il codice seguente e aggiungere i valori appropriati per il server, il database, il nome utente e la password.

Nota

Per usare una stringa di connessione ADO.NET, sostituire le 4 righe di codice impostando server, database, nome utente e password con la riga seguente. Immettere il proprio nome utente e la password.

builder.ConnectionString="<your_ado_net_connection_string>";

using Microsoft.Data.SqlClient;
using System;
using System.Threading.Tasks;

namespace sqltest
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var builder = new SqlConnectionStringBuilder
            {
                DataSource = "<your_server.database.windows.net>",
                UserID = "<your_username>",
                Password = "<your_password>",
                InitialCatalog = "<your_database>"
            };

            var connectionString = builder.ConnectionString;

            try
            {
                await using var connection = new SqlConnection(connectionString);
                Console.WriteLine("\nQuery data example:");
                Console.WriteLine("=========================================\n");

                await connection.OpenAsync();

                var sql = "SELECT name, collation_name FROM sys.databases";
                await using var command = new SqlCommand(sql, connection);
                await using var reader = await command.ExecuteReaderAsync();

                while (await reader.ReadAsync())
                {
                    Console.WriteLine("{0} {1}", reader.GetString(0), reader.GetString(1));
                }
            }
            catch (SqlException e) when (e.Number == /* specific error number */)
            {
                Console.WriteLine($"SQL Error: {e.Message}");
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }

            Console.WriteLine("\nDone. Press enter.");
            Console.ReadLine();
        }
    }
}

Ricordarsi di sostituire <your_server.database.windows.net>, <your_username>, <your_password> e <your_database> con i dettagli effettivi di SQL Server. Sostituire anche /* specific error number */ con il numero errore SQL effettivo che si vuole gestire.

Eseguire il codice

  1. Al prompt eseguire i seguenti comandi.

    dotnet restore
    dotnet run
    
  2. Verificare che le righe vengano restituite; l'output può includere altri valori.

    Query data example:
    =========================================
    
    master    SQL_Latin1_General_CP1_CI_AS
    tempdb    SQL_Latin1_General_CP1_CI_AS
    WideWorldImporters    Latin1_General_100_CI_AS
    
    Done. Press enter.
    
  3. Scegliere INVIO per chiudere la finestra dell'applicazione.