C# ile Resim Dosyası yükleme
Görüntüleri saklamak için depolama gereksinimlerinize bağlı olarak BLOB (İkili Büyük Nesne) veri türlerinden herhangi birini kullanabilirsiniz. MEDIUMBLOB veri türünü kullanıyoruz. Aşağıdakiler MySQL’deki çeşitli BLOB tiplerinin depolama kapasiteleridir.
using MySql.Data.MySqlClient;
using System.IO;
Veritabanına kaydedilecek bir resim seçmek için PictureBox Click olayına aşağıdaki kodu yazın.
private void pbStudentImage_Click(object sender, EventArgs e)
{
try
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
openFileDialog1.Filter = "Image files | *.jpg";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
txtStudentImage.Text = openFileDialog1.FileName;
pbStudentImage.Image = Image.FromFile(openFileDialog1.FileName);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
“TxtStudentImage” TextBox öğesinin Tıkla ve Gir olaylarına şu olayı atayın.
this.txtStudentImage.Click += new System.EventHandler(this.pbStudentImage_Click);
this.txtStudentImage.Enter += new System.EventHandler(this.pbStudentImage_Click);
BtnSave Düğmesinin Click olayına aşağıdaki kodu yazın.
private void btnSaveImage_Click(object sender, EventArgs e)
{
MySqlConnection con = new MySqlConnection(ConString);
MySqlCommand cmd;
FileStream fs;
BinaryReader br;
try
{
if (txtFirstName.Text.Length > 0 && txtStudentImage.Text.Length > 0)
{
string FileName = txtStudentImage.Text;
byte[] ImageData;
fs = new FileStream(FileName, FileMode.Open, FileAccess.Read);
br = new BinaryReader(fs);
ImageData = br.ReadBytes((int)fs.Length);
br.Close();
fs.Close();
string CmdString = "INSERT INTO Students(FirstName, LastName, Image, Address) VALUES(@FirstName, @LastName, @Image, @Address)";
cmd = new MySqlCommand(CmdString, con);
cmd.Parameters.Add("@FirstName", MySqlDbType.VarChar, 45);
cmd.Parameters.Add("@LastName", MySqlDbType.VarChar, 45);
cmd.Parameters.Add("@Image", MySqlDbType.Blob);
cmd.Parameters.Add("@Address", MySqlDbType.VarChar, 100);
cmd.Parameters["@FirstName"].Value = txtFirstName.Text;
cmd.Parameters["@LastName"].Value = txtLastName.Text;
cmd.Parameters["@Image"].Value = ImageData;
cmd.Parameters["@Address"].Value = txtAddress.Text;
con.Open();
int RowsAffected = cmd.ExecuteNonQuery();
if (RowsAffected > 0)
{
MessageBox.Show("Image saved sucessfully!");
}
con.Close();
}
else
{
MessageBox.Show("Incomplete data!", "", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (con.State == ConnectionState.Open)
{
con.Close();
}
}
}