Altbilgi içeriğine atla
.NET YARDıM

C# MySQL Bağlantısı (Geliştiriciler İçin Nasıl Çalışır)

C# MySQL Entegrasyonuna Giriş

C# uygulamalarını MySQL veritabanlarına bağlamak, verileri etkin bir şekilde depolamak, almak ve yönetmek için ilişkisel bir veritabanının gücünden yararlanma imkanı sunar. Bu kılavuz, MySQL'yi C# uygulamalarıyla entegre etmek için adım adım bir süreç sağlar ve IronPDF kütüphanesi kullanarak MySQL veritabanınızdaki verilerden nasıl PDF oluşturulacağını gösterir.

Ön Koşullar

Bu kılavuzla birlikte ilerlemek için gerekli öğeler:

  • Visual Studio veya herhangi bir C# IDE
  • Bir MySQL Veritabanı (kurulu ve çalışır durumda)
  • IronPDF kütüphanesi (PDF oluşturma için)

MySQL Veritabanını Kurma

MySQL'i Kurma ve Yapılandırma

  1. mysql.com'dan son MySQL sürümünü indirin.
  2. Kurulum programını çalıştırın ve kurulum talimatlarını izleyin. MySQL Sunucusu ve MySQL Workbench'ı dahil etmek için 'Geliştirici Varsayılanı'nı seçin.
  3. Yapılandırma sırasında MySQL kök kullanıcı kimlik bilgilerini ayarlayın ve MySQL hizmetinin çalıştığından emin olun.

Örnek Bir Veritabanı ve Tablolar Oluşturma

  1. MySQL Workbench'i açın ve sunucuya bağlanın.
  2. SQL komutları kullanarak yeni bir veritabanı ve örnek bir tablo oluşturun:
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)
);
  1. Örnek verileri ekleyin:
INSERT INTO Employees (FirstName, LastName, Position, Salary) 
VALUES ('John', 'Doe', 'Software Developer', 80000),
       ('Jane', 'Smith', 'Data Analyst', 75000);

Uzaktan Erişim için MySQL Kullanıcısını Ayarlama (İsteğe Bağlı)

Uzaktan erişim için gerekli izinlere sahip bir MySQL kullanıcısı oluşturun:

CREATE USER 'remoteUser'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON SampleDB.* TO 'remoteUser'@'%';
FLUSH PRIVILEGES;

C#'yi MySQL Veritabanına Bağlama

C#'de MySql.Data Kütüphanesini Yükleme

C# uygulamalarını MySQL'e bağlamak için, genellikle Connector/NET olarak adlandırılan MySQL Connector/NET kütüphanesini kullanırız. Bu, MySQL'in resmi .NET sürücüsüdür ve NuGet aracılığıyla yüklenebilir.

  1. Visual Studio'yu açın ve yeni bir C# Konsol Uygulaması oluşturun.
  2. MySql.Data kütüphanesini NuGet Paket Yöneticisi üzerinden ekleyin:
    • Projeye sağ tıklayın > NuGet Paketlerini Yönet > Gözat > MySql.Data arayın ve yükleyin.

Bağlantı Kodunu Yazma

Aşağıdaki kod örneği, MySQL'e bir bağlantı kurmanın nasıl yapılacağını gösterir:

using System;
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}");
        }
        finally
        {
            connection.Close(); // Ensure the connection is closed after use
        }
    }
}
using System;
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}");
        }
        finally
        {
            connection.Close(); // Ensure the connection is closed after use
        }
    }
}
Imports System
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}")
		Finally
			connection.Close() ' Ensure the connection is closed after use
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Açıklama:

  • Bağlantı Dizesi: Sunucu, veritabanı adı, kullanıcı kimliği ve şifre gibi bilgileri içerir.
  • MySqlConnection: Bağlantıyı kurmak için kullanılır.
  • Open() Metodu: Bağlantıyı açmaya çalışır.
  • İstisna Yönetimi: Bağlantı hatalarını düzgün bir şekilde yönetmek için istisnaları yakalayın.

Bağlantı İçin DNS SRV Kayıtlarını Kullanma (Opsiyonel)

Uygulamanız bulutta barındırılıyorsa veya MySQL veritabanına DNS SRV kayıtlarıyla bağlanması gerekiyorsa, sunucu adını veritabanının IP'sine çözümleyen uygun DNS girdisi ile değiştirin.

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;"
$vbLabelText   $csharpLabel

Bağlantı Havuzu

Varsayılan olarak, MySQL Connector/NET bağlantı havuzunu destekler, bu da veritabanı bağlantılarını daha verimli bir şekilde yönetmeye yardımcı olur. Bağlantı havuzu, sürekli açık ve kapalı bağlantılar oluşturma yükünü azaltarak mevcut bağlantıları bir havuzdan yeniden kullanır.

Bağlantı havuzu davranışını özelleştirmek istiyorsanız, bağlantı dizginizi şu şekilde ayarlayabilirsiniz:

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;"
$vbLabelText   $csharpLabel

Yaygın Hataları Ele Alma

Yaygın sorunlar, yanlış bağlantı dizgeleri, güvenlik duvarı kısıtlamaları veya MySQL hizmetinin çalışmıyor olması gibi olabilir. Tüm yapılandırma bilgilerini doğru girdirdiğinizden ve MySQL hizmetinin etkin olduğundan emin olun.

C# ve MySQL ile CRUD İşlemleri Yapma

Veritabanı İşlemleri İçin C# Sınıfı Oluşturma

Kod organizasyonu için, tüm veritabanı işlemlerini yönetecek bir DatabaseHelper sınıfı oluşturun. Bu sınıf, Ekleme, Okuma, Güncelleme ve Silme verileri (CRUD) işlemleri için yöntemler içerecektir.

using System;
using MySql.Data.MySqlClient;

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";

    // Method to insert a new employee record
    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);

            // Add parameters to prevent SQL injection
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);

            connection.Open();
            cmd.ExecuteNonQuery(); // Execute the insert command
        }
    }
}
using System;
using MySql.Data.MySqlClient;

public class DatabaseHelper
{
    private string connectionString = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;";

    // Method to insert a new employee record
    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);

            // Add parameters to prevent SQL injection
            cmd.Parameters.AddWithValue("@FirstName", firstName);
            cmd.Parameters.AddWithValue("@LastName", lastName);
            cmd.Parameters.AddWithValue("@Position", position);
            cmd.Parameters.AddWithValue("@Salary", salary);

            connection.Open();
            cmd.ExecuteNonQuery(); // Execute the insert command
        }
    }
}
Imports System
Imports MySql.Data.MySqlClient

Public Class DatabaseHelper
	Private connectionString As String = "Server=localhost;Database=SampleDB;User ID=root;Password=yourpassword;"

	' Method to insert a new employee record
	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)

			' Add parameters to prevent SQL injection
			cmd.Parameters.AddWithValue("@FirstName", firstName)
			cmd.Parameters.AddWithValue("@LastName", lastName)
			cmd.Parameters.AddWithValue("@Position", position)
			cmd.Parameters.AddWithValue("@Salary", salary)

			connection.Open()
			cmd.ExecuteNonQuery() ' Execute the insert command
		End Using
	End Sub
End Class
$vbLabelText   $csharpLabel

Açıklama:

  • Parametreleştirme: @Parameter kullanmak, SQL enjeksiyonu riskini azaltır.
  • connection.Open(): MySQL bağlantısını açar.
  • cmd.ExecuteNonQuery(): ekleme sorgusunu yürütür.

MySQL Veritabanına Veri Ekleme

Yeni çalışan verilerini eklemek için InsertEmployee metodunu çağırın:

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)
$vbLabelText   $csharpLabel

Veri Alma ve Gösterme

Verileri alıp konsolda görüntüleyin:

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
$vbLabelText   $csharpLabel

Açıklama:

  • ExecuteReader(): seçme sorgusunu yürütür ve bir MySqlDataReader nesnesi döndürür.
  • reader.Read(): Sonuç kümesini iter, her çalışan detaylarını gösterir.

Kayıtları Güncelleme ve Silme

Bir çalışanın maaşını güncellemek için bir örnek:

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

        // Parameterize the SQL command
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);

        connection.Open();
        cmd.ExecuteNonQuery(); // Execute the update command
        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);

        // Parameterize the SQL command
        cmd.Parameters.AddWithValue("@Salary", newSalary);
        cmd.Parameters.AddWithValue("@EmployeeID", employeeId);

        connection.Open();
        cmd.ExecuteNonQuery(); // Execute the update command
        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)

		' Parameterize the SQL command
		cmd.Parameters.AddWithValue("@Salary", newSalary)
		cmd.Parameters.AddWithValue("@EmployeeID", employeeId)

		connection.Open()
		cmd.ExecuteNonQuery() ' Execute the update command
		Console.WriteLine("Employee salary updated successfully!")
	End Using
End Sub
$vbLabelText   $csharpLabel

Güncelleme Komutu: Personel ID'si baz alınarak Maaş sütununu güncelleyen parametrik sorgu kullanır.

IronPDF ile MySQL Verilerinden PDF Üretme

IronPDF'e Giriş

IronPDF, geliştiricilerin C# uygulamaları içinde kolayca PDF belgeleri oluşturmasına, düzenlemesine ve manipüle etmesine olanak tanıyan sağlam bir kütüphanedir. Otomatik rapor üretimi, belge manipülasyonu veya HTML-PDF dönüştürme gerektiren veri odaklı uygulamalar için mükemmel bir araç haline getiren geniş bir PDF işlevselliği desteği sunar. Dinamik web sayfalarını PDF dosyalarına dönüştürmeniz veya sıfırdan özel PDF'ler oluşturmanız gerekirse, IronPDF süreci birkaç satır kod ile kolaylaştırır.

IronPDF'nin Ana Özellikleri

  • HTML'den PDF'ye Dönüştürme: IronPDF'in öne çıkan özelliklerinden biri, HTML içeriğini tamamen biçimlendirilmiş PDF belgelere dönüştürme yeteneğidir. Bu özellik, dinamik web içeriğinden rapor oluşturmak veya web formatında saklanan verilerle çalışırken özellikle kullanışlıdır.
  • PDF Düzenleme: IronPDF, metin, resimler, tablolar ve daha fazlası gibi içeriği ekleme, kaldırma ve değiştirme dahil olmak üzere mevcut PDF'leri düzenleme işlemlerini gerçekleştirir. Bu, var olan belgeleri işlemek veya güncellemek zorunda olan uygulamalar için idealdir.
  • PDF Birleştirme ve Bölme: IronPDF ile, birden fazla PDF'yi tek bir dokümanda birleştirebilir veya büyük bir PDF'yi daha küçük dosyalara bölebilirsiniz. Bu özellik, büyük belge koleksiyonlarını düzenlemek ve yönetmek için faydalıdır.
  • Stil ve Özelleştirme: HTML'den gelen PDF'leri oluştururken, belgeyi stilize etmek ve uygulamanızın tasarımına uygun bir düzen elde etmek için CSS kullanabilirsiniz. IronPDF, PDF'lerinizin görünümü üzerinde tam kontrol sağlar ve belirlediğiniz özel gereksinimleri karşıladıklarından emin olur.

C# Projenizde IronPDF'i Ayarlama

IronPDF kullanmak için NuGet Paket Yöneticisi aracılığıyla Visual Studio'da yükleyin:

Install-Package IronPdf

MySQL Verilerini PDF Formatına Dönüştürme

İşte çalışan verilerinden bir PDF raporu oluşturmayı gösteren tam kod örneği:

using System;
using MySql.Data.MySqlClient;
using IronPdf;

public class Program
{
    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 System;
using MySql.Data.MySqlClient;
using IronPdf;

public class Program
{
    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 System
Imports MySql.Data.MySqlClient
Imports IronPdf

Public Class Program
	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
$vbLabelText   $csharpLabel

Kodun Açıklaması

  1. MySQL Veritabanına Bağlantı:

    • connectionString, MySQL sunucusunu, veritabanını, kullanıcıyı ve şifreyi tanımlar.
    • MySqlConnection kullanarak bağlanır ve CRUD işlemlerini MySqlCommand ile yaparsınız.
  2. Yerleştirme İşlemi (InsertEmployee):

    • SQL enjeksiyonunu önlemek için parametreli sorgularla (@FirstName, @LastName, vb.) MySqlCommand kullanır.
    • Bağlantı açıldıktan sonra (connection.Open()), ExecuteNonQuery() INSERT SQL ifadesini çalıştırır.
  3. Okuma İşlemi (GetEmployees):

    • Tüm çalışan kayıtlarını getirmek için bir SELECT * sorgusu yürütür.
    • Sonuç kümesini yineleyip her kaydı konsolda göstermek için bir MySqlDataReader kullanır.
  4. Güncelleme İşlemi (UpdateEmployeeSalary):

    • Metod, çalışanın maaşını güncellemek için bir employeeId ve bir newSalary kabul eder.
    • Parametreli bir UPDATE SQL sorgusu kullanır.
  5. PDF Generation (GenerateEmployeeReportPDF):
    • Çalışan verilerini basit bir tablo yapısı ile bir HTML dizesine toplar.
    • HTML içeriği, PDF raporu oluşturmak için IronPDF'nin RenderHtmlAsPdf metoduna geçirilir.
    • Ortaya çıkan PDF, EmployeeReport.pdf olarak kaydedilir.

Sonuç

Bu makalede, MySQL'i bir C# uygulaması ile entegre etmek için gerekli adımları inceledik. Veritabanının kurulumundan CRUD işlemlerinin gerçekleştirilmesine ve IronPDF ile PDF üretilmesine kadar, veri odaklı uygulamalar oluştururken kritik olan geniş bir temel konular yelpazesi ele alındı. İşte ana kavramların özeti:

  • MySQL ve C# Entegrasyonu: MySql.Data kütüphanesini kullanarak bir MySQL veritabanına nasıl bağlanılacağını, veritabanı bağlantıların nasıl yönetileceğini ve parametreli sorgular kullanarak CRUD işlemlerinin nasıl yapılacağını gösterdik. Bu, verilerin güvenli ve düzenli bir şekilde saklanmasını, güncellenmesini ve alınmasını sağlar.
  • CRUD İşlemlerinin Gerçekleştirilmesi: Çalışan verilerini ekleme, güncelleme ve okuma için örnek yöntemlerle, bu mantığı gerçek dünya veritabanlarında diğer kayıt türlerini yönetmek için genişletebilirsiniz. Parametreli sorguların kullanılması ayrıca SQL enjeksiyon saldırılarını azaltarak uygulamanızın güvenliğini sağlar.
  • IronPDF ile PDF Üretimi: IronPDF, dinamik HTML içeriğinden profesyonel görünümlü PDF'ler oluşturmayı basit hale getirir. MySQL'den alınan verileri bir HTML tablosuna dönüştürerek, fatura, rapor, özet ve daha fazlası için faydalı olabilecek özelleştirilmiş raporlar oluşturabilir ve bunları PDF olarak saklayabiliriz. IronPDF'nin basit API'si, uygulamalarında PDF oluşturmayı ele alması gereken her C# geliştiricisi için mükemmel bir araçtır.

C# ve MySQL'i birleştirerek geliştiriciler, verileri saklayıp yöneten ve PDF raporlama gibi gelişmiş işlevler sunan sağlam uygulamalar oluşturabilirler. Bu yetenekler, doğru veri yönetimi ve raporlamanın kritik olduğu finans sektörü veya sağlık hizmetleri gibi farklı sektörlerde faydalıdır.

C# uygulamalarına PDF oluşturmayı dahil etmek isteyen geliştiriciler için IronPDF, tüm özellikleri denemenizi sağlayan bir araçtır. Basit belgeler veya karmaşık raporlar oluşturmanız gereksin, IronPDF, iş akışınıza PDF oluşturmayı otomatikleştirmek için paha biçilmez bir araç olabilir.

Sıkça Sorulan Sorular

C# uygulamalarıyla MySQL entegrasyonu için önkoşullar nelerdir?

C# uygulamaları ile MySQL'yi entegre etmek için Visual Studio gibi bir IDE'ye, çalışan bir MySQL veritabanına ve veritabanı içeriğinden PDF oluşturmak için IronPDF'ye ihtiyacınız var.

C# kullanarak MySQL verilerini nasıl bir PDF'ye dönüştürebilirim?

MySQL verilerini bir PDF'ye dönüştürmek için, önce verileri bir HTML dizesine dönüştürün ve ardından IronPDF'nin RenderHtmlAsPdf yöntemini kullanarak bir PDF dökümanı oluşturun.

C# ile kullanmak için MySQL nasıl kurulur ve yapılandırılır?

MySQL'i mysql.com'dan indirerek kurun, yükleyiciyi çalıştırın ve kurulum talimatlarını izleyin. Kurulum için 'Geliştirici Varsayılanı' seçerek MySQL Sunucusu ve Workbench'i dahil edin ve root kullanıcı kimlik bilgilerini yapılandırın.

C# ve MySQL veritabanı bağlantısı için hangi kütüphane önerilir?

C# uygulamaları ile MySQL veritabanı arasında bağlantı sağlamak için MySQL Connector/NET kütüphanesi önerilir. Bu kütüphane, iletişimi kolaylaştıran bağlantı dizelerinin kullanılmasına olanak tanır.

C# ile MySQL kullanırken SQL sorgularımı nasıl güvence altına alabilirim?

SQL sorgularını güvence altına almak için, uygun girdileri doğrulayarak SQL enjeksiyon saldırılarını önlemeye yardımcı olan parametreli sorgular kullanın.

MySQL ve C# bağlamında bağlantı havuzu nedir?

Bağlantı havuzu, sürekli bağlantı açma ve kapama ile ilgili ek yükü azaltarak verimliliği artıran bir havuzdan veritabanı bağlantılarını yeniden kullanma uygulamasıdır.

C# entegrasyonu için MySQL'de örnek bir veritabanı ve tabloyu nasıl oluştururum?

MySQL Workbench'i açın, sunucunuza bağlanın ve CREATE DATABASE SampleDB; ve CREATE TABLE Employees (...); gibi SQL komutlarını kullanarak örnek bir veritabanı ve tabloyu kurun.

C# uygulamaları için bir PDF kütüphanesinde hangi özelliklere bakmalıyım?

C# için sağlam bir PDF kütüphanesi, HTML'den PDF'ye dönüştürme, PDF düzenleme, birleştirme ve ayırma gibi özellikler sunmalı ve IronPDF tarafından sağlanan CSS kullanılarak özel stiller uygulama yeteneğine sahip olmalıdır.

C# kullanarak bir MySQL veritabanında CRUD işlemleri nasıl gerçekleştirilir?

C#'ta bir yardımcı sınıf oluşturarak, MySQL veritabanında veri ekleme, okuma, güncelleme ve silme işlemlerini gerçekleştirmek için parametreli SQL komutlarını kullanan yöntemlerle CRUD işlemleri uygulayın.

C# kullanarak bir MySQL veritabanındaki bir çalışanın bilgilerini nasıl güncelleyebilirim?

Çalışanın bilgilerini güncellemek için, C#'ta bir parametreli UPDATE SQL komutunu kullanan bir yöntem yazarak, örneğin ÇalışanID'ye dayalı maaş güncellemeleri gibi değişikliklere izin verin.

Jacob Mellor, Teknoloji Direktörü @ Team Iron
Teknoloji Direktörü

Jacob Mellor, Iron Software'de Baş Teknoloji Yöneticisidir ve C# PDF teknolojisinde öncü bir mühendisdir. Iron Software'ın ana kod tabanının ilk geliştiricisi olarak, CEO Cameron Rimington ile birlikte şirketin ürün mimarisini 50'den fazla kişilik bir şirkete dönüştürmüştür ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara