.NET ヘルプ

C# MySQL 接続(開発者のための動作原理)

公開済み 2024年12月16日
共有:

C# MySQL統合の紹介

C#アプリケーションをMySQLデータベースに接続することで、開発者はデータを効率的に格納、取得、管理するためのリレーショナルデータベースの力を活用できます。 このガイドは、統合するためのステップバイステップのプロセスを提供します。MySQLC#アプリケーションでMySQLデータベース内のデータからPDFを生成する方法を示します。IronPDFライブラリ.

前提条件

このガイドに従うには、以下が必要です。

  • Visual Studioまたは任意のC# IDE
  • MySQLデータベース(インストールして実行中)
  • IronPDFライブラリ(PDF生成用)

MySQLデータベースの設定

MySQLのインストールと設定

  1. MySQLの最新バージョンをダウンロードするにはmysql.com.

  2. インストーラーを実行し、セットアップ手順に従ってください。 「Developer Default」を選択して、MySQL ServerとMySQL Workbenchを含めます。

  3. セットアップ中にMySQLのルートユーザーの認証情報を設定し、MySQLサービスが実行中であることを確認します。

サンプルデータベースとテーブルの作成

  1. MySQL Workbenchを開き、サーバーに接続します。

  2. SQLコマンドを使用して新しいデータベースとサンプルテーブルを作成します。
CREATE DATABASE SampleDB;
USE SampleDB;
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Position VARCHAR(50),
    Salary DECIMAL(10, 2)
);
CREATE DATABASE SampleDB;
USE SampleDB;
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY AUTO_INCREMENT,
    FirstName VARCHAR(50),
    LastName VARCHAR(50),
    Position VARCHAR(50),
    Salary DECIMAL(10, 2)
);
CREATE DATABASE SampleDB
Dim SampleDB As USE
CREATE TABLE Employees(EmployeeID INT PRIMARY KEY AUTO_INCREMENT, FirstName VARCHAR(50), LastName VARCHAR(50), Position VARCHAR(50), Salary [DECIMAL](10, 2))
VB   C#
  1. サンプルデータを挿入します:
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);
INSERT INTO Employees(FirstName, LastName, Position, Salary) VALUES( 'John', 'Doe', 'Software Developer', 80000), ('Jane', 'Smith', 'Data Analyst', 75000);
VB   C#

リモートアクセス用のMySQLユーザーの設定 (オプション)

リモートアクセスのために、必要な権限を持つMySQLユーザーを作成します。

CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON SampleDB.* TO 'remoteUser'@'%';
FLUSH PRIVILEGES;
CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON SampleDB.* TO 'remoteUser'@'%';
FLUSH PRIVILEGES;
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'CREATE USER 'remoteUser"@"c%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES @ON SampleDB.* @TO 'remoteUser"@"c%'; FLUSH PRIVILEGES;
VB   C#

プログラムを実行すると、これで次のように見えるはずです。

C# MySQL 接続(開発者向けの動作方法):図1

C#をMySQLデータベースに接続する

C#でMySql.Dataライブラリをインストールする

C#アプリケーションをMySQLに接続するには、MySQL Connector/NETライブラリを使用します。(しばしば Connector/NET と呼ばれます). これは、NuGetを介してインストールできる、MySQLの公式.NETドライバーです。

  1. Visual Studio を開き、新しい C# コンソール アプリケーションを作成します。

    1. NuGet パッケージマネージャーを使用して MySql.Data ライブラリを追加する:

      • プロジェクトを右クリック > NuGet パッケージの管理 > 参照 > MySql.Data を検索してインストールします。

    C# MySQL接続(開発者向けの仕組み):図2 - NuGetパッケージマネージャーからMySql.Dataをインストールする

接続コードの記述

次のコード例は、MySQLへの接続方法を示しています。

using MySql.Data.MySqlClient;
public class Program
{
    // Connection string containing the server, database, user credentials, etc.
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    private void Initialize()
    {
        // Create a MySQL connection object
        MySqlConnection connection = new MySqlConnection(connectionString);
        try
        {
            connection.Open();
            Console.WriteLine("Connected to MySQL Database!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
using MySql.Data.MySqlClient;
public class Program
{
    // Connection string containing the server, database, user credentials, etc.
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    private void Initialize()
    {
        // Create a MySQL connection object
        MySqlConnection connection = new MySqlConnection(connectionString);
        try
        {
            connection.Open();
            Console.WriteLine("Connected to MySQL Database!");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error: {ex.Message}");
        }
    }
}
Imports MySql.Data.MySqlClient
Public Class Program
	' Connection string containing the server, database, user credentials, etc.
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"
	Private Sub Initialize()
		' Create a MySQL connection object
		Dim connection As New MySqlConnection(connectionString)
		Try
			connection.Open()
			Console.WriteLine("Connected to MySQL Database!")
		Catch ex As Exception
			Console.WriteLine($"Error: {ex.Message}")
		End Try
	End Sub
End Class
VB   C#

C# MySQL接続(開発者向けの仕組み):図3 - コンソール出力:接続成功

説明

  • private string server: ホストを表す(例:localhostローカルサーバーの場合やリモート接続のためのIPアドレス).
  • private string database: データベース名を表します(この場合のSampleDB).
  • private string password: MySQLユーザーを認証するためのパスワード。
  • private MySqlConnection connection: 接続を開くと管理するために使用されるMySQLの接続オブジェクト。

    上記のコードでは、MySqlConnection を使用して MySQL データベースとの接続を確立します。

DNS SRVレコードを使用した接続(オプション)

アプリケーションがクラウドにホストされている場合や、DNS SRVレコードを介してMySQLデータベースに接続する必要がある場合は、サーバー名をデータベースのIPに解決される対応するDNSエントリに置き換えることができます。

string connectionString = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;";
string connectionString = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;";
Dim connectionString As String = "Server=mysql.example.com;Database=SampleDB;User ID=root;Password=yourpassword;"
VB   C#

接続プーリング

デフォルトでは、MySQL Connector/NET は接続プールをサポートしており、データベース接続をより効率的に管理するのに役立ちます。 接続プーリングは、プールから既存の接続を再利用することで、接続の開閉を繰り返す際のオーバーヘッドを削減します。

接続プール動作をカスタマイズしたい場合は、接続文字列を次のように調整できます。

string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;";
string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;";
Dim connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;Pooling=true;"
VB   C#

一般的なエラーの処理

一般的な問題には、不正確な接続文字列、ファイアウォールによる制限、またはMySQLサービスが実行されていないことが含まれます。 すべての構成詳細が正しいこと、およびMySQLサービスがアクティブであることを確認してください。

C#とMySQLでCRUD操作を実行する

データベース操作用のC#クラスを作成する

コードの整理のために、すべてのデータベース操作を処理するDatabaseHelperクラスを作成します。 このクラスには、データの挿入、読み取り、更新、削除のためのメソッドが含まれます。(CRUD (作成、読み取り、更新、削除))操作。

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);
            connection.Open();
            cmd.ExecuteNonQuery();
        }
    }
}
public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);
            connection.Open();
            cmd.ExecuteNonQuery();
        }
    }
}
Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"
	Public Sub InsertEmployee(ByVal firstName As String, ByVal lastName As String, ByVal position As String, ByVal salary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)"
			Dim cmd As New MySqlCommand(query, connection)
			cmd.Parameters.AddWithValue("@FirstName", firstName)
			cmd.Parameters.AddWithValue("@LastName", lastName)
			cmd.Parameters.AddWithValue("@Position", position)
			cmd.Parameters.AddWithValue("@Salary", salary)
			connection.Open()
			cmd.ExecuteNonQuery()
		End Using
	End Sub
End Class
VB   C#

説明

  • パラメータ化: @Parameterを使用することで、SQLインジェクションのリスクを低減します。
  • 接続.オープン()**: MySQL接続を開きます。
  • cmd.ExecuteNonQuery():挿入クエリを実行します。

MySQLデータベースへのデータ挿入

新しい従業員データを追加するには、InsertEmployee メソッドを呼び出してください。

DatabaseHelper dbHelper = new DatabaseHelper();
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
DatabaseHelper dbHelper = new DatabaseHelper();
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
Dim dbHelper As New DatabaseHelper()
dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000)
VB   C#

データの取得と表示

データを取得してコンソールに表示します。

public void GetEmployees()
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "SELECT * FROM Employees";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        connection.Open();
        using (MySqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine($"{reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
            }
        }
    }
}
public void GetEmployees()
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "SELECT * FROM Employees";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        connection.Open();
        using (MySqlDataReader reader = cmd.ExecuteReader())
        {
            while (reader.Read())
            {
                Console.WriteLine($"{reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
            }
        }
    }
}
Public Sub GetEmployees()
	Using connection = New MySqlConnection(connectionString)
		Dim query As String = "SELECT * FROM Employees"
		Dim cmd As New MySqlCommand(query, connection)
		connection.Open()
		Using reader As MySqlDataReader = cmd.ExecuteReader()
			Do While reader.Read()
				Console.WriteLine($"{reader("FirstName")} {reader("LastName")}, Position: {reader("Position")}, Salary: {reader("Salary")}")
			Loop
		End Using
	End Using
End Sub
VB   C#

説明

  • ExecuteReader(): 選択クエリを実行し、MySqlDataReaderオブジェクトを返します。
  • reader.Read(): 結果セットを反復処理し、各従業員の詳細を表示します。

レコードの更新と削除

以下は社員の給与を更新する例です。

public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
        connection.Open();
        cmd.ExecuteNonQuery();
        Console.WriteLine("Employee salary updated successfully!");
    }
}
public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
{
    using (var connection = new MySqlConnection(connectionString))
    {
        string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
        MySqlCommand cmd = new MySqlCommand(query, connection);
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
        connection.Open();
        cmd.ExecuteNonQuery();
        Console.WriteLine("Employee salary updated successfully!");
    }
}
Public Sub UpdateEmployeeSalary(ByVal employeeId As Integer, ByVal newSalary As Decimal)
	Using connection = New MySqlConnection(connectionString)
		Dim query As String = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID"
		Dim cmd As New MySqlCommand(query, connection)
		cmd.Parameters.AddWithValue("@Salary", newSalary)
		cmd.Parameters.AddWithValue("@EmployeeID", employeeId)
		connection.Open()
		cmd.ExecuteNonQuery()
		Console.WriteLine("Employee salary updated successfully!")
	End Using
End Sub
VB   C#

更新コマンド: EmployeeIDに基づいてSalary列を更新するパラメーター化クエリを使用します。

IronPDFを使用してMySQLデータからPDFを生成

IronPDFの紹介

IronPDFは、C#アプリケーション内でPDFドキュメントの作成、編集、操作を容易に行うことができる強力なライブラリです。 幅広いPDF機能をサポートしており、特にデータ駆動型のアプリケーションに最適なツールです。これは、自動化されたレポート生成、ドキュメント操作、またはHTMLからPDFへの変換を必要とする場合において非常に有用です。 動的なウェブページをPDFファイルに変換する必要がある場合でも、ゼロからカスタムPDFを生成する場合でも、IronPDFは数行のコードでプロセスを簡単にします。

IronPDFの主な機能

  • HTMLからPDFへの変換: IronPDFの際立った機能の一つはその能力であるHTMLの変換コンテンツを完全にフォーマットされたPDF文書に変換します。 この機能は、動的なウェブコンテンツからレポートを生成する場合や、ウェブ形式で保存されたデータを扱う場合に特に便利です。
  • PDFの編集: IronPDFは、既存のPDFを編集することができ、テキスト、画像、表などのコンテンツを追加、削除、および修正する機能を提供します。 これは、既存のドキュメントを処理または更新する必要があるアプリケーションに最適です。
  • PDFの結合と分割: IronPDFを使用すると、簡単に複数のPDFを結合単一のドキュメントに分割大きなPDFを小さなファイルに分割します。 この機能は、大量の文書の整理と管理に役立ちます。
  • スタイリングとカスタマイズ: HTMLからPDFを生成する際に、CSSを使用してドキュメントをスタイル設定し、アプリケーションのデザインに合ったカスタムレイアウトを実現できます。 IronPDFはPDFの外観を完全に制御でき、特定の要件を満たすことを保証します。

C#プロジェクトでのIronPDFの設定

使用するにはIronPDFNuGet パッケージ マネージャーを使用して Visual Studio にインストールします。

Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
VB   C#

MySQLデータをPDF形式に変換する

以下は、従業員データのPDFレポートを作成する方法を示す完全なコード例です:

using IronPdf;
using System;
using MySql.Data.MySqlClient;
public class Program
{
    // MySQL connection string
    private static string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    public static void Main(string[] args)
    {
        // Perform CRUD operations
        DatabaseHelper dbHelper = new DatabaseHelper();
        // Insert a new employee
        dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
        // Display employees
        dbHelper.GetEmployees();
        // Update an employee's salary
        dbHelper.UpdateEmployeeSalary(1, 95000);
        // Generate a PDF report
        dbHelper.GenerateEmployeeReportPDF();
        Console.WriteLine("Operations completed.");
    }  
}
public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    // Insert employee into database
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee {firstName} {lastName} inserted successfully!");
        }
    }
    // Get employees from the database and display them
    public void GetEmployees()
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                Console.WriteLine("\nEmployee List:");
                while (reader.Read())
                {
                    Console.WriteLine($"{reader["EmployeeID"]} - {reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
                }
            }
        }
    }
    // Update the salary of an employee
    public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@Salary", newSalary);
            cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee ID {employeeId}'s salary updated to {newSalary}.");
        }
    }
    // Generate a PDF report of all employees
    public void GenerateEmployeeReportPDF()
    {
        string htmlContent = "<h1>Employee Report</h1><table border='1'><tr><th>EmployeeID</th><th>First Name</th><th>Last Name</th><th>Position</th><th>Salary</th></tr>";
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    htmlContent += $"<tr><td>{reader["EmployeeID"]}</td><td>{reader["FirstName"]}</td><td>{reader["LastName"]}</td><td>{reader["Position"]}</td><td>{reader["Salary"]}</td></tr>";
                }
            }
        }
        htmlContent += "</table>";
        // Use IronPDF to convert HTML to PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("EmployeeReport.pdf");
        Console.WriteLine("PDF Report generated successfully!");
    }
}
using IronPdf;
using System;
using MySql.Data.MySqlClient;
public class Program
{
    // MySQL connection string
    private static string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    public static void Main(string[] args)
    {
        // Perform CRUD operations
        DatabaseHelper dbHelper = new DatabaseHelper();
        // Insert a new employee
        dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000);
        // Display employees
        dbHelper.GetEmployees();
        // Update an employee's salary
        dbHelper.UpdateEmployeeSalary(1, 95000);
        // Generate a PDF report
        dbHelper.GenerateEmployeeReportPDF();
        Console.WriteLine("Operations completed.");
    }  
}
public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";
    // Insert employee into database
    public void InsertEmployee(string firstName, string lastName, string position, decimal salary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee {firstName} {lastName} inserted successfully!");
        }
    }
    // Get employees from the database and display them
    public void GetEmployees()
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                Console.WriteLine("\nEmployee List:");
                while (reader.Read())
                {
                    Console.WriteLine($"{reader["EmployeeID"]} - {reader["FirstName"]} {reader["LastName"]}, Position: {reader["Position"]}, Salary: {reader["Salary"]}");
                }
            }
        }
    }
    // Update the salary of an employee
    public void UpdateEmployeeSalary(int employeeId, decimal newSalary)
    {
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            cmd.Parameters.AddWithValue("@Salary", newSalary);
            cmd.Parameters.AddWithValue("@EmployeeID", employeeId);
            connection.Open();
            cmd.ExecuteNonQuery();
            Console.WriteLine($"Employee ID {employeeId}'s salary updated to {newSalary}.");
        }
    }
    // Generate a PDF report of all employees
    public void GenerateEmployeeReportPDF()
    {
        string htmlContent = "<h1>Employee Report</h1><table border='1'><tr><th>EmployeeID</th><th>First Name</th><th>Last Name</th><th>Position</th><th>Salary</th></tr>";
        using (var connection = new MySqlConnection(connectionString))
        {
            string query = "SELECT * FROM Employees";
            MySqlCommand cmd = new MySqlCommand(query, connection);
            connection.Open();
            using (MySqlDataReader reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    htmlContent += $"<tr><td>{reader["EmployeeID"]}</td><td>{reader["FirstName"]}</td><td>{reader["LastName"]}</td><td>{reader["Position"]}</td><td>{reader["Salary"]}</td></tr>";
                }
            }
        }
        htmlContent += "</table>";
        // Use IronPDF to convert HTML to PDF
        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("EmployeeReport.pdf");
        Console.WriteLine("PDF Report generated successfully!");
    }
}
Imports Microsoft.VisualBasic
Imports IronPdf
Imports System
Imports MySql.Data.MySqlClient
Public Class Program
	' MySQL connection string
	Private Shared connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"
	Public Shared Sub Main(ByVal args() As String)
		' Perform CRUD operations
		Dim dbHelper As New DatabaseHelper()
		' Insert a new employee
		dbHelper.InsertEmployee("Alice", "Brown", "Project Manager", 90000)
		' Display employees
		dbHelper.GetEmployees()
		' Update an employee's salary
		dbHelper.UpdateEmployeeSalary(1, 95000)
		' Generate a PDF report
		dbHelper.GenerateEmployeeReportPDF()
		Console.WriteLine("Operations completed.")
	End Sub
End Class
Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"
	' Insert employee into database
	Public Sub InsertEmployee(ByVal firstName As String, ByVal lastName As String, ByVal position As String, ByVal salary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "INSERT INTO Employees (FirstName, LastName, Position, Salary) VALUES (@FirstName, @LastName, @Position, @Salary)"
			Dim cmd As New MySqlCommand(query, connection)
			cmd.Parameters.AddWithValue("@FirstName", firstName)
			cmd.Parameters.AddWithValue("@LastName", lastName)
			cmd.Parameters.AddWithValue("@Position", position)
			cmd.Parameters.AddWithValue("@Salary", salary)
			connection.Open()
			cmd.ExecuteNonQuery()
			Console.WriteLine($"Employee {firstName} {lastName} inserted successfully!")
		End Using
	End Sub
	' Get employees from the database and display them
	Public Sub GetEmployees()
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "SELECT * FROM Employees"
			Dim cmd As New MySqlCommand(query, connection)
			connection.Open()
			Using reader As MySqlDataReader = cmd.ExecuteReader()
				Console.WriteLine(vbLf & "Employee List:")
				Do While reader.Read()
					Console.WriteLine($"{reader("EmployeeID")} - {reader("FirstName")} {reader("LastName")}, Position: {reader("Position")}, Salary: {reader("Salary")}")
				Loop
			End Using
		End Using
	End Sub
	' Update the salary of an employee
	Public Sub UpdateEmployeeSalary(ByVal employeeId As Integer, ByVal newSalary As Decimal)
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "UPDATE Employees SET Salary = @Salary WHERE EmployeeID = @EmployeeID"
			Dim cmd As New MySqlCommand(query, connection)
			cmd.Parameters.AddWithValue("@Salary", newSalary)
			cmd.Parameters.AddWithValue("@EmployeeID", employeeId)
			connection.Open()
			cmd.ExecuteNonQuery()
			Console.WriteLine($"Employee ID {employeeId}'s salary updated to {newSalary}.")
		End Using
	End Sub
	' Generate a PDF report of all employees
	Public Sub GenerateEmployeeReportPDF()
		Dim htmlContent As String = "<h1>Employee Report</h1><table border='1'><tr><th>EmployeeID</th><th>First Name</th><th>Last Name</th><th>Position</th><th>Salary</th></tr>"
		Using connection = New MySqlConnection(connectionString)
			Dim query As String = "SELECT * FROM Employees"
			Dim cmd As New MySqlCommand(query, connection)
			connection.Open()
			Using reader As MySqlDataReader = cmd.ExecuteReader()
				Do While reader.Read()
					htmlContent &= $"<tr><td>{reader("EmployeeID")}</td><td>{reader("FirstName")}</td><td>{reader("LastName")}</td><td>{reader("Position")}</td><td>{reader("Salary")}</td></tr>"
				Loop
			End Using
		End Using
		htmlContent &= "</table>"
		' Use IronPDF to convert HTML to PDF
		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
		pdf.SaveAs("EmployeeReport.pdf")
		Console.WriteLine("PDF Report generated successfully!")
	End Sub
End Class
VB   C#

コンソール出力:

C# MySQL 接続(開発者のための仕組み):図 4

PDF出力

C# MySQL接続(開発者向けの仕組み):図5

コードの内訳

  1. MySQLデータベースへの接続:

    • connectionStringは、MySQLサーバー、データベース、ユーザー、およびパスワードを定義します。
    • MySqlConnectionを使用して接続し、CRUD操作をMySqlCommandで処理します。
  2. 挿入操作(InsertEmployee)申し訳ありませんが、具体的なテキストを提供してください。翻訳するコンテンツをお送りいただければ、喜んで日本語に翻訳いたします。

    • MySqlCommand を使用してパラメータ化されたクエリを実行します。(@FirstName、@LastNameなど。)SQLインジェクションを防ぐために。
    • 接続を開いた後(connection.Open()), ExecuteNonQuery()INSERT SQL文を実行します。
  3. **読み取り操作(GetEmployees)申し訳ありませんが、具体的なテキストを提供してください。翻訳するコンテンツをお送りいただければ、喜んで日本語に翻訳いたします。

    • SELECT * クエリを実行して、すべての従業員レコードを取得します。
    • MySqlDataReaderを使用して結果セットを反復処理し、各レコードをコンソールに表示します。
  4. 更新操作(UpdateEmployeeSalary)申し訳ありませんが、具体的なテキストを提供してください。翻訳するコンテンツをお送りいただければ、喜んで日本語に翻訳いたします。

    • そのメソッドは、employeeIdとnewSalaryを受け取って従業員の給与を更新します。
    • パラメータ化されたUPDATE SQLクエリを使用します。
  5. **PDF生成(GenerateEmployeeReportPDF)申し訳ありませんが、具体的なテキストを提供してください。翻訳するコンテンツをお送りいただければ、喜んで日本語に翻訳いたします。

    • 従業員データを簡単な表構造でHTML文字列に収集します。

    • HTMLコンテンツは、IronPDFのHtmlToPdf.StaticRenderHtmlAsPdfメソッドに渡されてPDFレポートを生成します。
    • 生成されたPDFはEmployeeReport.pdfとして保存されます。

結論

この記事では、C#アプリケーションにMySQLを統合するための基本的な手順を説明しました。 データベースの設定やCRUD操作の実行からIronPDFを使用したPDF生成まで、データ駆動型アプリケーションの構築に重要な幅広い基礎的なトピックをカバーしました。 以下は主要な概念の概要です:

  • MySQLとC#の統合: MySql.Dataライブラリを使用してMySQLデータベースに接続し、データベース接続を管理し、パラメータ化されたクエリを使用してCRUD操作を実行する方法を示しました。 これにより、データが安全かつ効率的に保存、更新、および整理された方法で取得されることを保証します。
  • CRUD操作を実行する: 従業員データを挿入、更新、および読み取るための例のメソッドを使用することで、このロジックを拡張して実際のデータベース内で他の種類のレコードを管理できます。 パラメータ化されたクエリの使用は、SQLインジェクション攻撃を軽減し、アプリケーションのセキュリティを確保するのに役立ちます。
  • IronPDF for PDF Generation: IronPDFは、動的なHTMLコンテンツからプロフェッショナルな外観のPDFを簡単に生成します。 MySQLから取得したデータをHTMLテーブルに変換することで、カスタマイズされたレポートを作成し、PDFとして保存することができます。これは、請求書、レポート、要約などを生成するのに役立ちます。 IronPDFのシンプルなAPIは、アプリケーション内でPDF生成を扱う必要があるC#開発者にとって優れたツールです。

    C#とMySQLを組み合わせることで、開発者はPDFレポーティングのような高度な機能を提供しながら、データを保存および管理する堅牢なアプリケーションを構築することができます。 これらの機能は、金融から医療に至るまで、正確なデータ管理と報告が重要なあらゆる産業で役立ちます。

    C#アプリケーションにPDF生成を組み込みたい開発者向けに、IronPDFフル機能をテストすることができるようにします。 シンプルなドキュメントや高度なレポートの生成が必要な場合、IronPDFはワークフロー内でPDF作成を自動化するための貴重なツールとなるでしょう。

< 以前
C# での Parseint(開発者向けの仕組み)
次へ >
C# 名前付きタプル(開発者向けの仕組み)