フッターコンテンツにスキップ
.NETヘルプ

C# PostgreSQL(開発者向けの動作方法)

初心者のためにデザインされたこのチュートリアルへようこそ。PostgreSQLとのC#アプリケーション統合に興味のある方に最適です。 PostgreSQLは世界中で最も使用されているリレーショナルデータベースの1つであり、その信頼性とC#を含む多様なプログラミング環境との互換性で知られています。 このガイドでは、C#アプリケーションをPostgreSQLデータベースに接続し、SQL文のクエリを実行し、データを処理する基本について説明します。 Visual Studio、NuGetパッケージマネージャー、Npgsqlデータプロバイダーなどのツールを使用して、PostgreSQLサーバーと通信するシンプルなプロジェクトを作成します。 また、PostgreSQLの統合を行うIronPDFライブラリについても学びます。

環境のセットアップ

コーディングを始める前に、コンピュータにVisual Studioがインストールされていることを確認してください。 Visual Studioは、多くのプログラミング言語をサポートする人気の統合開発環境(IDE)で、C#をサポートしています。 データベース管理のために、ローカルマシンにPostgreSQLをインストールするか、Azure Databaseのようなクラウド環境にPostgreSQLデータベースをセットアップします。

Visual StudioとPostgreSQLサーバーを設定した後、新しいC#プロジェクトを作成してください。 Visual Studioを開き、ファイルメニューに移動し、新規作成を選択した後、プロジェクトを選びます。 プロジェクトタイプには、簡単にするためにConsole App (.NET Core) を選びます。

PostgreSQLとC#の統合

C#アプリケーションをPostgreSQLデータベースに接続するには、Npgsqlデータプロバイダーが必要です。 Npgsqlは、C#アプリケーションとPostgreSQLデータベースの間の橋渡しの役割を果たし、コードがSQLコマンドを実行し、データを管理できるようにします。

Npgsqlのインストール

新しく作成したプロジェクトをVisual Studioで開きます。 ソリューションエクスプローラーでプロジェクトを右クリックして"NuGetパッケージの管理"を選び、Npgsqlパッケージを検索します。 パッケージ名の隣にあるインストールボタンをクリックしてインストールします。 このアクションにより、Npgsqlデータプロバイダーがプロジェクトに追加され、アプリケーションがPostgreSQLと通信できるようになります。 パッケージマネージャーコンソールを使用してインストールすることもできます。

C# PostgreSQL (開発者向けガイド): 図1 - Npgsql

データベース接続の構成

C#からPostgreSQLデータベースと対話する最初のステップは接続を確立することです。 これには、サーバー名、ポート、ユーザー名、パスワードなどの詳細を含む接続文字列が必要です。 ここにPostgreSQL接続文字列の基本テンプレートがあります。

string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=yourpassword; Database=mydatabase";
$vbLabelText   $csharpLabel

localhostyourpasswordmydatabaseをあなたのPostgreSQLサーバーの詳細で置き換えてください。

従業員モデルの定義

私たちは、PostgreSQLデータベースでデータを表すEmployeeエンティティモデルを定義します。 このモデルには、データベーステーブルの列に対応するプロパティが含まれています。

public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
public class Employee
{
    public int Id { get; set; } // Automatically becomes the primary key
    public string LastName { get; set; }
}
$vbLabelText   $csharpLabel

このコードスニペットは、IdLastNameの2つのプロパティを持つシンプルなEmployeeクラスを定義しています。 Entity Framework Coreは、Idシリアル主キーをプライマリキーとして扱うべきことを推測するために慣習を使用します。

アプリケーションのDbContextの構成

AppDbContextクラスは、Entity Framework CoreのDbContextを拡張し、C#アプリケーションとPostgreSQLデータベースの間の橋渡しの役割を果たします。 それには接続文字列やデータベース内のテーブルを表すDbSetプロパティなどの設定詳細が含まれています。

public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
public class AppDbContext : DbContext
{
    public DbSet<Employee> Employees { get; set; } // Represents the Employees table

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        string connectionString = "Host=localhost; Port=5432; Username=postgres; Password=your_password; Database=your_database";
        optionsBuilder.UseNpgsql(connectionString);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().ToTable("Employees");
    }
}
$vbLabelText   $csharpLabel
  • DbSet プロパティ:**パブリック DbSet従業員 { 取得; set; } は、Employee**エンティティのセットを宣言し、PostgreSQLデータベース内の従業員テーブルにマッピングされます。

  • OnConfiguring メソッド:このメソッドは、必要なデータベース接続文字列を使用してDbContextを構成します。 your_passwordyour_databaseをあなたの実際のPostgreSQLサーバーの詳細で置き換えてください。

  • OnModelCreating メソッド:ここでは、Fluent API を使用してエンティティの動作をさらに構成できます。 この例では、テーブル名を明示的に指定していますが、DbSetプロパティ名とテーブル名が一致する場合は省略可能です。

メインプログラムのロジック

ProgramクラスのMainメソッドでは、データベースが作成され、空の場合は初期データでシードされ、その後、クエリを実行して従業員データを取得して表示します。

class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        using (var context = new AppDbContext())
        {
            context.Database.EnsureCreated();  // Ensure the database and schema are created
            if (!context.Employees.Any())  // Check if the Employees table is empty
            {
                context.Employees.Add(new Employee { LastName = "Software" });
                context.SaveChanges();  // Save changes to the database
            }
            var employees = context.Employees.Where(e => e.LastName == "Software").ToList();
            foreach (var employee in employees)
            {
                Console.WriteLine($"Employee ID: {employee.Id}, Last Name: {employee.LastName}");
            }
        }
    }
}
$vbLabelText   $csharpLabel

上記のコードは、データベースが存在するかどうかを確認し、スキーマと共に作成されていない場合は作成します。 これは、開発中に新しいデータベースをブートストラップするための簡単な方法です。 このSQL文は、Employeesテーブルが空の場合に、プログラムが"Software"という姓の新しいEmployeeを追加し、変更をデータベースに保存するかどうかを確認します。 プログラムは、Employeesテーブルの"Software"という姓のエントリをクエリし、その詳細をコンソールに表示します。

出力

プログラムを実行するときのコンソール出力はこちらです。

C# PostgreSQL (開発者向けガイド): 図2 - 出力

そして、それがPgAdminのテーブルデータです:

C# PostgreSQL (開発者向けガイド): 図3 - テーブル出力

IronPDFの紹介

IronPDFライブラリの機能を探索して、このC#用の包括的なライブラリが.NETアプリケーション内でPDFドキュメントの作成、編集、および操作をどのように可能にするかを理解してください。 この強力なツールは、HTML、URL、画像からPDFを生成するのを簡素化します。 また、テキストや画像の編集、暗号化やデジタル署名のようなセキュリティ機能の追加など、必要なPDF操作を提供します。 IronPDFは、最小のコードで複雑なPDF機能を実装できる使いやすさで際立っています。

IronPDFはHTMLをPDFに簡単に変換する機能を提供し、レイアウトとスタイルをそのままにします。 この機能は、レポート、請求書、文書などのWebベースのコンテンツからPDFを生成するのに理想的です。 HTMLファイル、URL、およびHTML文字列をPDFファイルに変換します。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // 1. Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // 2. Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // 3. Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
$vbLabelText   $csharpLabel

IronPDFとPostgreSQLデータベースを統合することは、データベースに保存されている動的なデータに基づいてPDFレポートや文書を生成する必要があるシナリオで非常に役立ちます。 これは、PostgreSQLデータベースに永続化されたデータから直接、請求書、レポート、顧客の明細書などを生成することに関連します。

IronPDFのインストール

IronPDFを使用する前に、プロジェクトに追加する必要があります。 これはNuGetパッケージマネージャーを介して簡単に行うことができます。

Install-Package IronPdf

PostgreSQLデータからPDFを生成する

この例では、PostgreSQLデータベースから従業員のリストを表示する簡単なPDFレポートを生成しましょう。 以前のセクションで説明したように、AppDbContextEmployeeモデルが設定されていることを前提とします。

最初に、プロジェクトにIronPDFライブラリがインストールされていることを確認してください。 その後、以下のコードを使用してPostgreSQLデータベースからデータを取得し、PDFレポートを生成できます。

class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        IronPdf.License.LicenseKey = "Key";
        // Initialize the database context
        using (var context = new AppDbContext())
        {
            // Fetch employees from the database
            var employees = context.Employees.ToList();
            // Generate HTML content for the PDF
            var htmlContent = "<h1>Employee Report</h1>";
            htmlContent += "<table><tr><th>ID</th><th>Last Name</th></tr>";
            foreach (var employee in employees)
            {
                htmlContent += $"<tr><td>{employee.Id}</td><td>{employee.LastName}</td></tr>";
            }
            htmlContent += "</table>";
            // Instantiate the IronPDF HtmlToPdf converter
            var renderer = new ChromePdfRenderer();
            // Generate the PDF document from the HTML content
            var pdf = renderer.RenderHtmlAsPdf(htmlContent);
            // Save the generated PDF to a file
            var outputPath = "f:\\EmployeeReport.pdf";
            pdf.SaveAs(outputPath);
            Console.WriteLine($"PDF report generated: {outputPath}");
        }
    }
}
$vbLabelText   $csharpLabel

出力

コードを実行すると、このコンソール出力が表示されます:

C# PostgreSQL (開発者向けガイド): 図4 - コンソール出力

このPDFが生成されました:

C# PostgreSQL (開発者向けガイド): 図5 - PDF出力

結論

あなたはC#とPostgreSQLを使用したデータベース管理の世界への重要な第一歩を踏み出しました。 このチュートリアルの指示に従って、Visual Studioでプロジェクトを設定し、必要なパッケージをインストールし、基本的なデータベース操作を実行する方法を学びました。 これらの概念に慣れていくうちに、C#と最も重要なリレーショナルデータベースシステムの1つを組み合わせる際の力と柔軟性を発見するでしょう。 異なるクエリやエンティティ構成を試して、C#がPostgreSQLとどのように対話するかについての理解を深め続けてください。

IronPDFは、IronPDF機能の無料トライアルを提供しており、開発者がその機能を初期投資なしで探求できます。 このトライアルは、IronPDFが.NETアプリケーションでPDFドキュメントを生成、編集、および変換するプロジェクトの要件をどれだけ満たすかを評価するために特に役立ちます。 試用期間後、または本番環境での使用のためには、ライセンスの取得が必要です。 IronPDFのライセンスは、$799から始まり、さまざまな開発ニーズに適した機能とサポートオプションを提供します。

よくある質問

C#アプリケーションをPostgreSQLデータベースに接続するにはどうすればよいですか?

C#アプリケーションをPostgreSQLデータベースに接続するには、Npgsqlデータプロバイダーを使用する必要があります。これはVisual StudioのNuGetパッケージマネージャー経由でインストールできます。サーバー名、ポート、ユーザー名、パスワード、データベース名を含む適切に構成された接続文字列も必要です。

C#プロジェクトをPostgreSQLでセットアップするにはどのようなステップが含まれていますか?

まず、マシンにVisual StudioとPostgreSQLをインストールします。その後、新しいC#プロジェクトを作成し、NuGetパッケージマネージャーを使用してNpgsqlデータプロバイダーをインストールします。接続文字列を設定し、PostgreSQLサーバーが実行されていることを確認します。

C#アプリケーションでSQLコマンドを実行するにはどうすればよいですか?

C#アプリケーションでSQLコマンドを実行するには、Npgsqlデータプロバイダーを使用します。PostgreSQLデータベースへの接続を確立したら、NpgsqlCommandを使用してSELECT、INSERT、UPDATE、DELETEといったSQLクエリを実行できます。

C#でPostgreSQLデータからPDFレポートを生成するにはどうすればよいですか?

IronPDFを使用すると、C#でPostgreSQLデータからPDFレポートを生成できます。データベースからデータを取得し、IronPDFの機能を使用してHTMLコンテンツをPDFに変換したり、既存のPDFを編集したりしてPDFドキュメントを作成できます。

C#でNpgsqlデータプロバイダーを使用する目的は何ですか?

Npgsqlデータプロバイダーは、C#でPostgreSQLデータベースとの通信を可能にするために使用されます。アプリケーションがSQLクエリを実行し、データを管理し、データベースとシームレスにやり取りできるようにします。

C#を使用してデータベースの作成とシードを行うにはどうすればよいですか?

C#では、context.Database.EnsureCreated()メソッドを使用してデータベースを作成できます。このメソッドはデータベースの存在を確認し、存在しない場合は作成します。初期データをシードするには、コンテキストにデータを追加し、context.SaveChanges()を使用してデータを永続化します。

C#アプリケーションでIronPDFを使用する利点は何ですか?

IronPDFは.NETアプリケーションにおいて、PDFドキュメントの作成、編集、操作において強力な機能を提供するため有益です。HTMLからPDFへの変換、テキストや画像の編集、暗号化などのセキュリティ機能をサポートしています。

C#でPostgreSQLテーブルのデータモデルを定義するにはどうすればよいですか?

C#でデータモデルを定義するには、PostgreSQLテーブル構造に対応するクラスを作成します。クラス内のプロパティはテーブルのカラムに対応しており、つまりEntity Frameworkがデータを正しくマップできるようになります。

C#とPostgreSQL間の接続の問題をトラブルシュートするにはどうすればよいですか?

接続の問題をトラブルシュートするには、接続文字列が正しく設定されているか確認し、PostgreSQLサーバーが実行中であることを確認し、接続をブロックしている可能性のあるファイアウォールやネットワークの問題がないかチェックします。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

Jacob Mellorは、Iron Softwareの最高技術責任者であり、C# PDF技術の開拓者としてその先進的な役割を担っています。Iron Softwareのコアコードベースのオリジナルデベロッパーである彼は、創業時から製品のアーキテクチャを形作り、CEOのCameron Rimingtonと協力してNASA、Tesla、全世界の政府機関を含む50人以上の会社に成長させました。

Jacobは、1998年から2001年にかけてマンチェスター大学で土木工学の第一級優等学士号(BEng)を取得しました。1999年にロンドンで最初のソフトウェアビジネスを立ち上げ、2005年には最初の.NETコンポーネントを作成し、Microsoftエコシステムにおける複雑な問題の解決を専門にしました。

彼の旗艦製品であるIronPDFとIronSuite .NETライブラリは、全世界で3000万以上のNuGetインストールを達成しており、彼の基本コードが世界中で使用されている開発者ツールを支えています。商業的な経験を25年間積み、コードを書くことを41年間続けるJacobは、企業向けのC#、Java、およびPython PDF技術の革新を推進し続け、次世代の技術リーダーを指導しています。