クイックスタート: .NET (C#) を使用してデータベースのクエリを実行する

適用対象: Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

このクイックスタートでは、.NET と C# コードを使用してデータベースに接続します。 その後、Transact-SQL ステートメントを実行して、データの照会を行います。 このクイックスタートは、Windows、Linux、macOS に適用され、統合された .NET プラットフォームを活用します。

前提条件

このクイック スタートを完了するには、次のものが必要です。

新しい .NET プロジェクトの作成

  1. コマンド プロンプトを開き、sqltest という名前のフォルダーを作成します。 このフォルダーに移動して、次のコマンドを実行します。

    dotnet new console
    

    このコマンドにより、初期 C# コード ファイル (Program.cs)、XML 構成ファイル (sqltest.csproj)、必要なバイナリなど、新しいアプリ プロジェクト ファイルが作成されます。

  2. 上記で使用されたコマンド プロンプトで、このコマンドを実行します。

    dotnet add package Microsoft.Data.SqlClient
    

    このコマンドによって、Microsoft.Data.SqlClient パッケージがプロジェクトに追加されます。

Azure SQL Database のデータベースに対してクエリを実行するコードを挿入する

  1. Visual Studio Code などのテキスト エディターで、Program.cs を開きます。

  2. その内容を次のコードで置き換え、サーバー、データベース、ユーザー名、パスワードに実際の値を追加します。

Note

ADO.NET の接続文字列を使用するには、コードでサーバー、データベース、ユーザー名、パスワードを設定している 4 行を、次の行に置き換えます。 文字列で、ユーザー名とパスワードを設定します。

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();
        }
    }
}

<your_server.database.windows.net><your_username><your_password><your_database> を実際の SQL Server の詳細に置き換えることを忘れないでください。 また、/* specific error number */ を、処理する実際の SQL エラー番号に置き換えます。

コードの実行

  1. プロンプトで、次のコマンドを実行します。

    dotnet restore
    dotnet run
    
  2. 行が返されることを確認します。出力には他の値が含まれる場合があります。

    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. Enter キーを押してアプリケーション ウィンドウを閉じます。