C# MySQL Bağlantısı (Geliştiriciler İçin Nasıl Çalışır)
C# MySQL Entegrasyonuna Giriş
C# uygulamalarını MySQL veritabanlarına bağlamak, geliştiricilerin verileri verimli bir şekilde saklamak, getirmek ve yönetmek için ilişkisel bir veritabanının gücünden yararlanmalarını sağlar. Bu kılavuz, bir MySQL uygulamasını C# uygulamalarıyla entegre etmek için adım adım bir işlem sağlar ve MySQL veritabanınızdaki verilerden IronPDF kutuphanesi kullanarak PDF'ler nasıl oluşturulacağını gösterir.
Önkoşullar
Bu kılavuzu takip etmek için ihtiyaçınız olanlar:
- Visual Studio veya herhangi bir C# IDE
- Bir MySQL Veritabanı (kurulu ve çalışır durumda)
- PDF oluşturma için IronPDF kutuphanesi
MySQL Veritabanını Kurma
MySQL Kurulumu ve Yapılandırması
- mysql.com'dan MySQL'in en son sürümünü indirin.
- Yükleyiciyi çalıştırın ve kurulum talimatlarını takip edin. MySQL Server ve MySQL Workbench'i dahil etmek için "Developer Default"u seçin.
- Kurulum sırasında MySQL kök kullanıcı kimlik bilgilerini yapılandırın ve MySQL hizmetinin çalıştığından emin olun.
Örnek Veritabanı ve Tablolar Oluşturma
- MySQL Workbench'i açın ve sunucuya bağlanın.
- SQL komutları kullanarak yeni bir veritabanı ve örnek 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 veri ekleyin:
INSERT INTO Employees (FirstName, LastName, Position, Salary)
VALUES ('John', 'Doe', 'Software Developer', 80000),
('Jane', 'Smith', 'Data Analyst', 75000);
Uzak Erişim için MySQL Kullanıcı Kurulumu (Opsiyonel)
Uzak 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# MySQL Veritabanına Bağlama
C#'ta MySql.Data Kütüphanesini Yükleme
C# uygulamalarını MySQL'e bağlamak için MySQL Connector/NET kutuphanesini (genellikle Connector/NET olarak anılır) kullanıyoruz. Bu, MySQL iç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.
- NuGet Paket Yöneticisi üzerinden MySql.Data kitaplığını ekleyin:
- Proje üzerine sağ tıklayın > NuGet Paketlerini Yönet > Gözat > MySql.Data'yı arayın ve yükleyin.
Bağlantı Kodunu Yazma
Aşağıdaki kod örneği MySQL'e nasıl bağlanı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 parola gibi bilgileri içerir.
- MySqlConnection: Bağlantıyı kurmak için kullanılır.
- Open() Metodu: Bağlantıyı açmaya çalışır.
- Hata Ayıklama: Bağlantı hatalarını nazikçe yönetmek için istisnaları yakalayın.
Bağlantı için DNS SRV Kayıtlarını Kullanma (İsteğe Bağlı)
Uygulamanız bulut ortamında barındırılıyorsa veya DNS SRV kayıtları üzerinden MySQL veritabanına bağlanması gerekiyorsa, sunucu adını veritabanının IP'sine çözümlenen ilgili DNS girişiyle değiştirebilirsiniz.
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, veritabanı bağlantılarını daha verimli yönetmeye yardımcı olan bağlantı havuzlama desteği sunar. Bağlantı havuzlama, mevcut havuzdan mevcut bağlantılar kullanılarak bağlantıların tekrar tekrar açılıp kapatılması yükünü azaltır.
Bağlantı havuzu davranışını özelleştirmek isterseniz, bağlantı dizgenizi ş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ı Yönetme
Yaygın sorunlar arasında yanlış bağlantı dizgeleri, güvenlik duvarı kısıtlamaları veya MySQL hizmetinin çalışmaması bulunur. Tüm yapılandırma ayrıntılarının doğru olduğundan ve MySQL hizmetinin etkin olduğundan emin olun.
C# ve MySQL ile CRUD İşlemleri Gerçekleştirme
Veritabanı İşlemleri için C# Sınıfı Oluşturma
Kod organizasyonu için, tüm veritabanı işlemlerini yönetmek için bir DatabaseHelper sınıfı oluşturun. Bu sınıf, Veri Ekleme, Okuma, Güncelleme ve Silme (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:
- Parametrizasyon:
@Parameterkullanımı SQL enjeksiyon riskini azaltır. - connection.Open(): MySQL bağlantısını açar.
- cmd.ExecuteNonQuery(): Ekleme sorgusunu çalıştırı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
Veri alarak konsolda gösterin:
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 çalıştırır ve bir MySqlDataReader nesnesi döndürür.
- reader.Read(): Sonuç kümesini üzerinde çalışarak her çalışanın ayrıntılarını gösterir.
Kayıtları Güncelleme ve Silme
İşte 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
Update Komutu: EmployeeID'ye göre Maaş sütununu güncellemek için parametreli bir sorgu kullanır.
IronPDF ile MySQL Verilerinden PDF Üretme
IronPDF'ye Giriş
IronPDF, geliştiricilerin C# uygulamaları içinde PDF belgeleri kolayca oluşturmasına, düzenlemesine ve yönetmesine olanak tanıyan güçlü bir kütüphanedir. Otomatik rapor oluşturma, belge yönetimi veya HTML-to-PDF dönüştürme gibi veri odaklı uygulamalar için mükemmel bir araçtır. Dinamik web sayfalarını PDF dosyalarına dönüştürmeniz veya yalnızca kendi başınıza özel PDF'ler oluşturmanız gerekse de, IronPDF birkaç satır kodla süreci basitleştirir.
IronPDF'in Temel Özellikleri
- HTML to PDF Dönüştürme: IronPDF'in öne çıkan özelliklerinden biri, HTML içeriğini tam biçimlendirilmiş PDF belgelerine dönüştürme yeteneğidir. Bu özellik, dinamik web içeriğinden rapor oluşturma veya web formatında depolanan verilerle çalışma durumunda özellikle kullanışlıdır.
- PDF Düzenleme: IronPDF, mevcut PDF'leri düzenleme, içerik ekleme, kaldırma ve değiştirme imkanı sunar. Örneğin, metin, resimler, tablolar ve daha fazlasını ekleyebilir veya çıkarabilirsiniz. Önceden var olan belgelerle işlem yapması veya güncelleme yapması gereken uygulamalar için idealdir.
- PDF Birleştirme ve Bölme: IronPDF ile birden çok PDF'yi birleştirebilir veya büyük bir PDF'yi daha küçük dosyalara bölebilirsiniz. Bu özellik, büyük belge kolleksiyonlarını düzenlemek ve yönetmek için kullanışlıdır.
- Stil ve Özelleştirme: HTML'den PDF oluştururken, CSS'i kullanarak belgeyi sitilize edebilir ve uygulamanızın tasarımına uygun bir özel düzen elde edebilirsiniz. IronPDF, PDF'lerinizin görünümü üzerinde tam kontrol sağlar ve belirli gereksinimlerinizi karşılamalarını sağlar.
C# Projenizde IronPDF Kurulumu
IronPDF kullanmak için, Visual Studio'da NuGet Paket Yöneticisi üzerinden yükleyin:
Install-Package IronPdf
MySQL Verisini PDF Formatına Dönüştürme
İşte çalışan verilerinin PDF raporunu nasıl oluşturacağınızı 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 Ayrıntıları
-
MySQL Veritabanına Bağlantı:
connectionString, MySQL sunucusunu, veritabanını, kullanıcıyı ve parolayı tanımlar.MySqlConnectionkullanarak bağlantı yaparsınız ve CRUD işlemleriniMySqlCommandile yönetirsiniz.
-
Veri Ekleme İşlemi (InsertEmployee):
- SQL enjeksiyonunu önlemek için parametrik 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 parametrik sorgularla (
-
Veri Okuma İşlemi (GetEmployees):
- Tüm çalışan kayıtlarını almak için bir
SELECT *sorgusu çalıştırır. - Sonuç kümesi üzerinde yineleme yapmak ve her kaydı konsolda gösterme için bir
MySqlDataReaderkullanır.
- Tüm çalışan kayıtlarını almak için bir
-
Güncelleme İşlemi (UpdateEmployeeSalary):
- Metod, çalışanın maaşını güncellemek için bir
employeeIdve birnewSalarykabul eder. - Parametrelendirilmiş bir UPDATE SQL sorgusu kullanır.
- Metod, çalışanın maaşını güncellemek için bir
- PDF Üretme İşlemi (GenerateEmployeeReportPDF):
- Basit bir tablo yapısıyla çalışan verilerini bir HTML dizesine toplar.
- HTML içeriği, bir PDF raporu oluşturmak için IronPDF'in
RenderHtmlAsPdfmetoduna gönderilir. - Ortaya çıkan PDF,
EmployeeReport.pdfolarak kaydedilir.
Sonuç
Bu makalede, MySQL ile bir C# uygulamasını entegre etmenin temel adımlarını ele aldık. Veritabanı kurulumundan CRUD operasyonlarını gerçekleştirmeye ve IronPDF ile PDF oluşturmaya kadar, veri odaklı uygulamalar oluşturmanın önemli olan birçok temel konusunu ele aldık. İşte anahtar 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öneteceğimizi ve parametrelendirilmiş sorgularla CRUD operasyonlarını nasıl gerçekleştirdiğimizi gösterdik. Bu, verilerin güvenli ve düzenli bir şekilde etkili bir şekilde saklanmasını, güncellenmesini ve alınmasını sağlar.
- CRUD İşlemlerini Gerçekleştirme: Çalışan verilerini ekleme, güncelleme ve okuma yöntemleri örnekleriyle, gerçek bir veritabanında diğer kayıt türlerini yönetmek için bu mantığı genişletebilirsiniz. Parametrelendirilmiş sorguların kullanımı, ayrıca SQL enjeksiyon saldırılarını hafifletmeye yardımcı olur ve uygulamanızın güvenliğini sağlar.
- PDF Üretme için IronPDF: IronPDF, dinamik HTML içeriğinden profesyonel görünümlü PDF'ler üretmeyi basit hale getirir. MySQL'den alınan verileri bir HTML tabloya dönüştürerek, özelleştirilmiş raporlar oluşturabilir ve bunları PDF olarak kaydedebiliriz; bu, faturalar, raporlar, özetler ve daha fazlasını oluşturmak için faydalı olabilir. IronPDF'in kolay anlaşılır API'si, uygulamaları içinde PDF üretimi yapması gereken herhangi bir C# geliştiricisi için harika bir araçtır.
C# ve MySQL'i birleştirerek, gelişmiş işlevsellikler sunarken verileri saklayıp yönetebilen sağlam uygulamalar geliştirebilirsiniz, örneğin PDF raporlaması gibi. Bu yetenekler, doğru veri yönetimi ve raporlamanın çok önemli olduğu finans ve sağlık hizmetleri gibi sektörlerde yararlıdır.
C# uygulamalarınıza PDF üretimi dahil etmek isteyen geliştiriciler için, IronPDF, tüm özellikler dizisini denemenize izin veren kullanışlı bir araçtır. Basit belgeler veya sofistike raporlar üretmeniz gerekip gerekmediği, IronPDF, iş akışınızda PDF oluşturmayı otomatikleştirmek için vazgeçilmez bir araç olabilir.
Sıkça Sorulan Sorular
MySQL'i C# uygulamalarıyla entegre etmenin ön koşulları nelerdir?
MySQL'u C# uygulamaları ile 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'e ihtiyaçınız var.
MySQL verilerini C# kullanarak nasıl PDF'e dönüştürebilirim?
MySQL verilerini bir HTML dizesine dönüştürüp ardından IronPDF'in RenderHtmlAsPdf yöntemini kullanarak bir PDF belge oluşturabilirsiniz.
C# ile kullanılmak üzere MySQL'i nasıl yükler ve yapılandırırsınız?
MySQL'i mysql.com'dan indirerek yükleyin, yükleyiciyi çalıştırın ve kurulum talimatlarını izleyin. MySQL Server ve Workbench'in dahil edilmesi için kurulumda 'Geliştirici Varsayılanı'nı seçin 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 bir MySQL veritabanı arasında bağlantı kurmak için MySQL Connector/NET kütüphanesi önerilir. Bu, iletişimi kolaylaştırmak için bağlantı dizelerinin kullanılmasına olanak tanır.
C# ile MySQL kullanırken SQL sorgularımı nasıl güvenli hale getirebilirim?
SQL sorgularını güvenli hale getirmek için, uygun giriş doğrulamasını sağlayarak SQL enjeksiyonu saldırılarını önlemeye yardımcı olan parametrelendirilmiş sorgular kullanın.
MySQL ve C# bağlamında bağlantı havuzu nedir?
Bağlantı havuzu, bağlantıların sürekli olarak açılıp kapanmasına bağlı yüklerin azaltılmasıyla verimliliği artıran bir havuzdan veritabanı bağlantılarını yeniden kullanma uygulamasına atıfta bulunur.
C# entegrasyonu için MySQL'de örnek bir veritabanı ve tablo nasıl oluşturulur?
MySQL Workbench'i açın, sunucunuza bağlanın ve bir örnek veritabanı ve tablo kurmak için CREATE DATABASE SampleDB; ve CREATE TABLE Employees (...); gibi SQL komutlarını kullanın.
C# uygulamaları için bir PDF kütüphanesinde hangi özellikleri aramalıyım?
C# için sağlam bir PDF kütüphanesi, IronPDF tarafından sağlananlar gibi HTML'den PDF'e dönüştürme, PDF düzenleme, birleştirme ve bölme, ve CSS kullanarak özel stiller uygulama gibi özellikler sunmalıdır.
C# kullanarak bir MySQL veritabanı üzerinde 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şlemleri için yöntemlerde parametrelendirilmiş SQL komutları kullanarak CRUD işlemlerini uygulayın.
C# kullanarak bir çalışan detaylarını MySQL veritabanında nasıl güncelleyebilirim?
Çalışan detaylarını güncellemek için, C#'ta bir UPDATE SQL komutunu parametreleştirerek bir yöntem yazın ve bu yöntem, örneğin ÇalışanID'sine göre maaş güncellemeleri gibi değişikliklere izin verir.




