• 09-08-2022, 11:26:34
    #1
    Merhaba,

    Yazılım öğrenmek için sıfırdan başladım. Winform ile şablon oluşturup datagridview ile eklenen ürünleri gösterme, listeleme, arama, güncelleme, silme ve dosyaya yazma işlemlerini yapmak istedim. ekleme işlemleri, listeleme ve dosyaya yazma işlemleri yaptım onlarda sorun yok. Veritabanı olmadan sadece ram de arama, silme ve güncelleme işlemlerini nasıl yapabilirim. yardımcı olabilirseniz çok sevinirim.

    Form görüntüsü aşağıda yer almaktadır.



    Ürün sınıf oluşturdum sınıf içeriği aşağıdadır.
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace _urun
    {
        internal class Urun
        {
            public int UrunID { get; set; }
            public string UrunAdi { get; set; }
            public string Katagori { get; set; }
            public double Fiyat { get; set; }
    
        }
        
    }
    form1.cs ise aşağıda yer almaktadır.
    using System.Windows.Forms;
    using System.IO;
    
    namespace _fomrs1.cs
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
    
            }
    
            private void BtnListe_Click(object sender, EventArgs e)
            {
                DataListesi.DataSource = urunler.ToList();
            }
    
            List<Urun> urunler = new List<Urun>();
            private void BtnKaydet_Click(object sender, EventArgs e)
            {
                Urun urun = new Urun();
                urun.UrunID = Convert.ToInt32(TxtUrunID.Text);
                urun.UrunAdi=TxtUrunAdi.Text;
                urun.Katagori=TxtKatagori.Text;
                urun.Fiyat = double.Parse(TxtFiyat.Text);
    
                urunler.Add(urun);
    
                DataListesi.DataSource = "";
                DataListesi.DataSource= urunler;
                
                MessageBox.Show("Kayıt Başarıyla Tamamlanmıştır.");            
            
            }
    
            private void BtnSil_Click(object sender, EventArgs e)
            {
                TxtUrunID.Text = TxtUrunID.Text.Remove(0);
    
                            
                if(DataListesi.SelectedRows.Count > 0)
                {
                    DataListesi.Rows.RemoveAt(DataListesi.SelectedRows[0].Index);
                }
                else
                {
                    MessageBox.Show("Lütfen Silinecek Satırı Seçiniz");
                }
            }
    
            private void BtnGuncelle_Click(object sender, EventArgs e)
            {
    
            }
    
            private void BtnYazdır_Click(object sender, EventArgs e)
            {
                StreamWriter Yaz = new StreamWriter(@"C:\Users\burak\OneDrive\Masaüstü\Yaz.txt");
                string DosyaYolu = "C:\\Yaz.txt";
                if (File.Exists(DosyaYolu))
                {
                    File.WriteAllText(DosyaYolu, DataListesi.Text);
                    MessageBox.Show(DosyaYolu + "Dosya Başaralı Şekilde Kaydedildi");
                }
                else
                {
                    MessageBox.Show(DosyaYolu + "Dosya Bulunamadı");
                }
            }
    
            private void BtnArama_Click(object sender, EventArgs e)
            {
                
            }
    
            private void DataListesi_CellContentClick(object sender, DataGridViewCellEventArgs e)
            {
    
            }
        }
    }
    şimdiden yardımcı olan kişiler için teşekkür derim.
  • 09-08-2022, 11:33:51
    #2
    Sadece RAM'de yapmak için kendi sistemini kurman gerekir. Örneğin veriyi arrayde tutup oradan değiştirmek yada silmek gibi işlemler yapabilirsin. Onun için in-memory veritabanları var c# ile onlarla çalışabilirsin
  • 09-08-2022, 11:37:03
    #3
    CihanAksoy adlı üyeden alıntı: mesajı görüntüle
    Sadece RAM'de yapmak için kendi sistemini kurman gerekir. Örneğin veriyi arrayde tutup oradan değiştirmek yada silmek gibi işlemler yapabilirsin. Onun için in-memory veritabanları var c# ile onlarla çalışabilirsin
    bilgilendirmeniz için teşekkür ederim. arrayde tutulması için urun sınıfına aşağıdaki gibi ürün id ürün adını ekleyip bu tarzda mı yapabilirim.

    Ürün İd : 1 Ürün Adı:Bilgisayar Ürün Kategorisi : Elektronik Ürün Fiyatı : 1200
    Ürün İd : 1 Ürün Adı:Bilgisayar Ürün Kategorisi : Elektronik Ürün Fiyatı : 1200
    Ürün İd : 2 Ürün Adı:Koltuk Ürün Kategorisi : Mobilya Ürün Fiyatı : 2800
  • 09-08-2022, 11:40:00
    #4
    üstad, text dosyaya yazmak, xml formatında text dosya kullanmak vs gibi şeyler bana hep zahmeti gelmiştir. Bir çeşit veritabanı kullanmak hem daha çok şey öğretiyor hem de yarın öbürgün daha büyük bir veritabanına geçmek konusunda sayısız kolaylıklar sağlıyor. XMLdatasource kullanabilirsin. bilgileri bir dataset veya datatable içerisine yazıp onu da xml olarak keydedebilirsin. zaten tek satırla kaydediyor. arama fonksiyonu için de datatable içerisindeki filter fonksiyonunu kullanabilirsin. internette bolca örnek var. ben NMemory kullanmayı tercih ediyorum. dosya kullanmayan, hafızada tutulan bir sql veritabanı. ayrıca ücretsiz. https://nmemory.net adresinden ulaşablirsin. Bilgi olarak sana pekçok şey katacığına inanıyorum. ileride yapacağın müşteri projelerinde de işine yarar. dosya kullanmadığı için de son derece hızlıdır.

    kolay gelsin.
  • 09-08-2022, 11:41:12
    #5
    Bunun için yüzlerce yöntem kullanılabilir c#'da aslında ancak bence şu şekilde bir yapı olmalı;

    internal class Urun { public int UrunID { get; set; } public string UrunAdi { get; set; } public Kategori Kategori { get; set; } public double Fiyat { get; set; } }
    internal class Kategori { public int KategoriID { get; set; } public string KategoriAdi { get; set; } }
  • 09-08-2022, 11:44:16
    #6
    Tavsiyem hemen winform projenizi kapatıp bir .net 6 web projesi başlatmanız olur.

    MVC veya web api olabilir.
    Winform hiç bir işe yaramayan ölü bir teknoloji şuanda.
    Ayrıca bu projelerin n layered olması gerekiyor, udemy de bir çok kaynak var.
  • 09-08-2022, 11:45:40
    #7
    FriendOfGhost adlı üyeden alıntı: mesajı görüntüle
    üstad, text dosyaya yazmak, xml formatında text dosya kullanmak vs gibi şeyler bana hep zahmeti gelmiştir. Bir çeşit veritabanı kullanmak hem daha çok şey öğretiyor hem de yarın öbürgün daha büyük bir veritabanına geçmek konusunda sayısız kolaylıklar sağlıyor. XMLdatasource kullanabilirsin. bilgileri bir dataset veya datatable içerisine yazıp onu da xml olarak keydedebilirsin. zaten tek satırla kaydediyor. arama fonksiyonu için de datatable içerisindeki filter fonksiyonunu kullanabilirsin. internette bolca örnek var. ben NMemory kullanmayı tercih ediyorum. dosya kullanmayan, hafızada tutulan bir sql veritabanı. ayrıca ücretsiz. https://nmemory.net adresinden ulaşablirsin. Bilgi olarak sana pekçok şey katacığına inanıyorum. ileride yapacağın müşteri projelerinde de işine yarar. dosya kullanmadığı için de son derece hızlıdır.

    kolay gelsin.
    bilgilendirmeniz için teşekkür ederim. sql içinde veritabanı oluşturup işlemler yapılması adına testlerim var, onlar içinde işlem yapacağım. belirttiğiniz siteyi de ilk fırsatta deneyeceğim. txt dosyası içinde acemelik diyelim. c# öğrendikçe xml olur farklı uzantılarda öğrenme şansım olur inşallah
  • 09-08-2022, 11:46:33
    #8
    CihanAksoy adlı üyeden alıntı: mesajı görüntüle
    Bunun için yüzlerce yöntem kullanılabilir c#'da aslında ancak bence şu şekilde bir yapı olmalı;

    internal class Urun { public int UrunID { get; set; } public string UrunAdi { get; set; } public Kategori Kategori { get; set; } public double Fiyat { get; set; } }
    internal class Kategori { public int KategoriID { get; set; } public string KategoriAdi { get; set; } }
    belirttiğiniz şekilde deneme yapacağım. tekrar teşekkür ederim.
  • 09-08-2022, 11:48:43
    #9
    Hoax adlı üyeden alıntı: mesajı görüntüle
    bilgilendirmeniz için teşekkür ederim. sql içinde veritabanı oluşturup işlemler yapılması adına testlerim var, onlar içinde işlem yapacağım. belirttiğiniz siteyi de ilk fırsatta deneyeceğim. txt dosyası içinde acemelik diyelim. c# öğrendikçe xml olur farklı uzantılarda öğrenme şansım olur inşallah
    sql veri tabanı oluşturmayın entity framework araçlarını kullanın, codefirst mantığını kullanın.