Dapper ile SQL Server üzerine resim kayıt etme

Dapper ile SQL Server üzerine resim kayıt etme

Dapper ile SQL Server’a resim kaydetmek için, resim verisini byte[] formatında almanız ve SQL’deki bir VARBINARY kolonuna kaydetmeniz gerekir. Aşağıda temel adımları ve örnek bir kod parçasını bulabilirsiniz:
Adımlar:
Resmi Byte Dizisine Dönüştürme: Resmi bir byte[] formatına dönüştürmeniz gerekiyor. Bunun için MemoryStream kullanabilirsiniz.

SQL Server’da Kolon Tipini Ayarlama: Resim verisinin saklanacağı kolonun tipi VARBINARY(MAX) olmalıdır.

Dapper ile Kaydetme: Dapper’da resim verisini SQL parametresi olarak geçerek kaydedebilirsiniz.

Örnek Kod:
1. Veritabanı Tablo Yapısı:

CREATE TABLE Images (
    Id INT IDENTITY PRIMARY KEY,
    ImageData VARBINARY(MAX),
    ImageName NVARCHAR(255)
);

2. Resmi Byte Dizisine Dönüştürme:

public byte[] ConvertImageToByteArray(string imagePath)
{
    using (var stream = new MemoryStream())
    {
        using (var image = Image.FromFile(imagePath))
        {
            image.Save(stream, image.RawFormat);
        }
        return stream.ToArray();
    }
}

3. Dapper ile Resim Kaydetme:

public void SaveImage(string connectionString, string imagePath, string imageName)
{
   byte[] imageBytes = ConvertImageToByteArray(imagePath);

    string query = "INSERT INTO Images (ImageData, ImageName) VALUES (@ImageData, @ImageName)";

    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
        connection.Execute(query, new { ImageData = imageBytes, ImageName = imageName });
    }
}

4. Kullanımı:

string connectionString = "Server=.;Database=MyDatabase;Trusted_Connection=True;";
string imagePath = @"C:\Images\example.jpg";
string imageName = "Example Image";

SaveImage(connectionString, imagePath, imageName);

Eğer bu resmi daha sonra okumak ve göstermek isterseniz, benzer bir yaklaşım izleyerek SELECT sorgusu ile resmi byte[] olarak alıp, görüntülemek için tekrar bir Image nesnesine dönüştürebilirsiniz.

 

Bu gönderiyi paylaş

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir