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
- mysql.com'dan son MySQL sürümünü indirin.
- 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.
- 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
- MySQL Workbench'i açın ve sunucuya bağlanın.
- 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)
);
- Ö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.
- Visual Studio'yu açın ve yeni bir C# Konsol Uygulaması oluşturun.
- 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
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;"
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;"
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
Açıklama:
- Parametreleştirme:
@Parameterkullanmak, 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)
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
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
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
Kodun Açıklaması
-
MySQL Veritabanına Bağlantı:
connectionString, MySQL sunucusunu, veritabanını, kullanıcıyı ve şifreyi tanımlar.MySqlConnectionkullanarak bağlanır ve CRUD işlemleriniMySqlCommandile yaparsınız.
-
Yerleştirme İşlemi (InsertEmployee):
- SQL enjeksiyonunu önlemek için parametreli sorgularla (
@FirstName,@LastName, vb.)MySqlCommandkullanır. - Bağlantı açıldıktan sonra (
connection.Open()),ExecuteNonQuery()INSERT SQL ifadesini çalıştırır.
- SQL enjeksiyonunu önlemek için parametreli sorgularla (
-
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
MySqlDataReaderkullanır.
- Tüm çalışan kayıtlarını getirmek için bir
-
Güncelleme İşlemi (UpdateEmployeeSalary):
- Metod, çalışanın maaşını güncellemek için bir
employeeIdve birnewSalarykabul eder. - Parametreli bir UPDATE SQL sorgusu kullanır.
- Metod, çalışanın maaşını güncellemek için bir
- 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
RenderHtmlAsPdfmetoduna geçirilir. - Ortaya çıkan PDF,
EmployeeReport.pdfolarak 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.




