c# Desktop

Seçilen Video Dosyasını SqlServer Veri Tabanında Tabloya Kaydedip Çalıştıran c# Form Uygulaması

Videoların veri tabanına kaydedilmesi güvenlik ve lisanslama dikkate alındığında kaydedilmesi gerekebilir. Ancak bir video dosyasını tabloya kayıt edilmesi hem zaman hem de işlem hızı bakımından çok yer almaktadır. Bu uygulamamızda seçilen video dosyasını tabloya kayıt ettikten sonra Combobox yardımıyla listeleyeceğiz. 

using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Windows.Forms;

namespace MyPlayer
{
    public partial class frmMyPlayer : Form
    {
        public frmMyPlayer()
        {
            InitializeComponent();
        }

        public string ConnectionString
        {
            get { return "Data Source=atmlveri.mssql.somee.com;
Initial Catalog=atmlveri;Persist Security Info=True;
User ID=atml_SQLLogin_1;Password=4amtopvujx;"; }
        }

        private void btnSave_Click(object sender, EventArgs e)
        {
            var file = GetFile();
            var lst = new string[] { ".mp3", ".avi", ".mp4", ".wmv" };
            if (!lst.Contains(Path.GetExtension(file)))
            { MessageBox.Show("Lütfen ses veya video dosyası seçiniz..."); }
            else
            {
                var result = SaveToDataBase(Path.GetFileName(file), 
GetCompressedData(file, ConvertFileToByteData(file)));
                if (result)
                {
                    cmbPlayList.Items.Add(Path.GetFileName(file));
                    MessageBox.Show("!! Dosya başarıyla kaydedildi !!");
                }
            }
        }

        private void btnPlay_Click(object sender, EventArgs e)
        {
            if (cmbPlayList.SelectedItem == null) { 
                 MessageBox.Show("Please select file to play."); return; 
              }
            axWindowsMediaPlayer1.URL = GetFromDataBase(cmbPlayList.SelectedItem.ToString());
            axWindowsMediaPlayer1.settings.autoStart = true;
        }

        private void frmMyPlayer_Load(object sender, EventArgs e)
        {
            SqlConnection myConnection = new SqlConnection(ConnectionString);

            String Query1 = "SELECT FileName FROM video";

            SqlDataAdapter adapter = new SqlDataAdapter(Query1, ConnectionString);

            DataSet Ds = new DataSet();

            adapter.Fill(Ds, "video");

            if (Ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("Veri bulunamadı");
            }
            else
            {
                foreach (DataRow item in Ds.Tables[0].Rows)
                {
                    cmbPlayList.Items.Add(item["FileName"]);
                }
            }
        }

        private void cmbPlayList_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void frmMyPlayer_Resize(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Height = ((Form)sender).Size.Height - 145;
            axWindowsMediaPlayer1.Width = ((Form)sender).Size.Width - 40;
        }

        private void frmMyPlayer_MaximumSizeChanged(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Height = ((Form)sender).Size.Height - 145;
            axWindowsMediaPlayer1.Width = ((Form)sender).Size.Width - 40;
        }

        private void frmMyPlayer_MinimumSizeChanged(object sender, EventArgs e)
        {
            axWindowsMediaPlayer1.Height = ((Form)sender).Size.Height - 145;
            axWindowsMediaPlayer1.Width = ((Form)sender).Size.Width - 40;
        }

        private void frmMyPlayer_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

        private string GetFile()
        {
            try
            {
                ofdPlayer.Filter = "Dosyaları Seç: (*.*)|*.*";
                //ofdPlayer.InitialDirectory = @"E:\\";
                ofdPlayer.Multiselect = true;
                if (ofdPlayer.ShowDialog() == DialogResult.OK)
                {
                    return ofdPlayer.FileName;
                }
            }
            catch (Exception)
            {
                throw;
            }
            return string.Empty;
        }

        private bool SaveToDataBase(string fileName, byte[] data)
        {
            try
            {
                var ds = new DataSet();
                SqlCommand cmd = new SqlCommand("insert into video 
                     values('" + Guid.NewGuid() + "','" + fileName + "',@content)");
                SqlParameter param = cmd.Parameters.Add("@content", SqlDbType.VarBinary);
                param.Value = data;
                cmd.Connection = new SqlConnection(ConnectionString);
                cmd.CommandTimeout = 0;
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                return true;
            }
            catch (Exception)
            {
                throw;
            }
        }

        private string GetFromDataBase(string fileName)
        {
            try
            {
                SqlConnection myConnection = new SqlConnection(ConnectionString);
                String Query1 = "SELECT Data FROM Video where FileName = '" + fileName + "'";
                SqlDataAdapter adapter = new SqlDataAdapter(Query1, ConnectionString);
                DataSet Ds = new DataSet();
                adapter.Fill(Ds, "Video");
                if (Ds.Tables[0].Rows.Count == 0)
                {
                    MessageBox.Show("No data Found");
                    return string.Empty;
                }
                return ConvertByteDataToFile(fileName, 
                      GetUnCompressedData((byte[])Ds.Tables[0].Rows[0]["Data"]));
            }
            catch (Exception)
            {
                throw;
            }
        }

        private string ConvertByteDataToFile(string targetFileName, byte[] value)
        {
            // ReSharper disable EmptyGeneralCatchClause
            var str = string.Empty;
            try
            {
                try
                {
                    var path = Path.GetTempPath();
                    str = path + "\\" + targetFileName;
                    if (File.Exists(str))
                        File.Delete(str);
                }
                catch (Exception) { }

                var file = (new BinaryWriter(new FileStream(str, 
                        FileMode.OpenOrCreate, FileAccess.Write)));
                file.Write(value);
                file.Close();
                return str;
            }
            catch (Exception) { }
            // ReSharper restore EmptyGeneralCatchClause
            return string.Empty;
        }

        private static byte[] ConvertFileToByteData(string sourceFileName)
        {
            BinaryReader binaryReader = null;
            if (!File.Exists(sourceFileName))
                return null;

            try
            {
                binaryReader = new BinaryReader(
                            new FileStream(sourceFileName, FileMode.Open, FileAccess.Read));
                return binaryReader.ReadBytes(ConvertToInt32(binaryReader.BaseStream.Length));
            }
            finally
            {
                if (null != binaryReader) binaryReader.Close();
            }
        }

        public static int ConvertToInt32(object parameter)
        {
            var returnvalue = Int32.MinValue;

            // If exception (Input string was not in a correct format) 
            // is raised then default return value is returned.
            try
            {
                if (null != parameter)
                    returnvalue = Convert.ToInt32(parameter, CultureInfo.InvariantCulture);
            }
            catch
            {
                return returnvalue;
            }

            return returnvalue;
        }

        public static byte[] GetCompressedData(string fileName, byte[] value)
        {
            try
            {
                // Code for zip file.
                if (value != null && !string.IsNullOrEmpty(fileName))
                    using (var zippedMemoryStream = new MemoryStream())
                    {
                        // A ZIP stream
                        using (var zipOutputStream = new ZipOutputStream(zippedMemoryStream))
                        {
                            // Highest compression rating 0 - 9.
                            zipOutputStream.SetLevel(9);

                            var entry = new ZipEntry(fileName) { DateTime = DateTime.Now };
                            zipOutputStream.PutNextEntry(entry);

                            zipOutputStream.Write(value, 0, ConvertToInt32(value.Length));

                            zipOutputStream.Finish();
                            zipOutputStream.Close();

                            return zippedMemoryStream.ToArray();
                        }
                    }
            }
            catch (Exception)
            {
                return value;
            }

            return null;
        }

        public static byte[] GetUnCompressedData(byte[] value)
        {
            try
            {
                if (value != null)
                    using (var zipInputStream = new ZipInputStream(new MemoryStream(value)))
                    {
                        while ((zipInputStream.GetNextEntry()) != null)
                        {
                            using (var zippedInMemoryStream = new MemoryStream())
                            {
                                var data = new byte[2048];
                                while (true)
                                {
                                    var size = zipInputStream.Read(data, 0, data.Length);
                                    if (size <= 0)
                                        break;

                                    zippedInMemoryStream.Write(data, 0, size);
                                }
                                zippedInMemoryStream.Close();

                                return zippedInMemoryStream.ToArray();
                            }
                        }
                    }
                return null;
            }
            catch (Exception)
            {
                return value;
            }
        }

    }
}

Etiketler
video database save table 
İlgili Makaleler
c# Console Uygulamalarında ReadKey Metoduyla Klavye Tuşlarını Kontrol Etme
Yıkıcı Metotlar (Destructors)
Sayısal Loto Çekilişini Yapan c# Uygulaması
Kredi Kartı Taksitlendirme İşlemini Yapan c# Uygulaması
Kaçan Buton Oyununu Yapan c# Uygulaması
Yazdırma İletişim Kutusu (PrintDialog)
C# Uygulamalarında HashMap Dizi Oluşturma
C# Uygulamalarında Dictionary Dizi Oluşturma
c# Form Uygulamalarında Ekranın Genişliğini ve Yüksekliğini Bulma
Rastgele Seçilen Bir Sayıyı Basamaklarına Ayıran, Basamak Değerini ve Sayı Değerini Bulan c# Console Uygulaması
Veri Girişi Doğrulama (Input Validation)
Veri Girişi Maskeleme (MaskedTextBox)
LINQ - Gruplama (Grouping) Örnekleri
Konsol Ekranında Kod Yazma ve Çalıştırma
Panel Üzerinde Serbest Çizim Yapan c# Form Uygulaması
c# Console Uygulamalarında Ping Nasıl Kullanılır, Ping Atma
C# Programlama Dilinde Veri Tipleri
Form Sayfalarında Ayrıntılı ListBox Kullanımı
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Kodlama
Belirtilen Sayı Kadar Yıldız Oluşturan c# Form Uygulaması

Yorum Ekle
   
Kötü İyi