การทำงานกับฐานข้อมูลใน C# มักใช้ ADO.NET หรือ Entity Framework Core (แนะนำสำหรับโปรเจกต์ใหม่) ฐานข้อมูลยอดนิยมคือ SQL Server, PostgreSQL, MySQL, SQLite
ขั้นตอนพื้นฐานกับ ADO.NET
1. เชื่อมต่อ (Connection)
string connectionString = "Server=localhost;Database=MyDb;User=sa;Password=****;TrustServerCertificate=True;";
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// ทำงานกับฐานข้อมูล
}
2. Select - ดึงข้อมูล
string sql = "SELECT Id, Name FROM Users WHERE Active = 1";
using (SqlCommand cmd = new SqlCommand(sql, conn))
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["Id"]}: {reader["Name"]}");
}
}
3. Insert - เพิ่มข้อมูล
string sql = "INSERT INTO Users (Name, Email) VALUES (@Name, @Email)";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", "John");
cmd.Parameters.AddWithValue("@Email", "john@example.com");
int rows = cmd.ExecuteNonQuery();
}
4. Update - อัปเดตข้อมูล
string sql = "UPDATE Users SET Name = @Name WHERE Id = @Id";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Name", "Jane");
cmd.Parameters.AddWithValue("@Id", 1);
cmd.ExecuteNonQuery();
}
5. Delete - ลบข้อมูล
string sql = "DELETE FROM Users WHERE Id = @Id";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.Parameters.AddWithValue("@Id", 1);
cmd.ExecuteNonQuery();
}
แนวทางปฏิบัติที่ดี (Best Practices)
- ใช้ Parameterized Queries ป้องกัน SQL Injection
- ใช้
usingบล็อก เพื่อ Dispose Connection/Command อัตโนมัติ - ใช้ Entity Framework Core สำหรับโปรเจกต์ใหม่ (ORM, LINQ, Migration)
- จัดการ Exception และ Transaction ให้เหมาะสม
- เก็บ Connection String ใน Configuration (appsettings.json, User Secrets)