Merhaba, ilginiz için teşekkür ederim.. Bu veri tabanı meselesi bir hâyli canımı sıktı açıkçası. Eskiden SQL dilini yeteri kadar bilmiyorken, C# programlama dilini yeteri kadar bilmiyorken böyle bir program yapmak hayal gibi geliyordu. Şimdi ise o düşünceleri atlattım ve uzun da sürse hatalar da yapsam bu programı yapabileceğimi biliyorum. Fakat bu veri tabanı meselesini hiç düşünmemiştim. Programı yaparım, Visual Studio üzerinden programı dışarı çıkartırım ve flash belleğe atıp herhangi bir bilgisayara takıp rahatça kullanabilirim diye düşünüyordumWinforms kullanmıyorsan çalışır.
MSSQL yerine MySQL kullanırsan da server sorunun çözülmüş olur. .NET MAUI yada AvaloniaUI gibi şeyler kullanman lazım. Winforms adı üstünde Windows forms uygulaması.
Uzak bağlantı için bilgisayarını yapılandırman lazım eğer bilgisayarını SQL server olarak kullanacaksan -ki başına epey dert açar sabit IP adresin olmadıktan sonra-, bununla uğraşmak yerine, mac'e MySQL kurarsın.
Ekleme konuyu iyice okudum, MSSQL ve MySQL serverları böyle bir uygulama için eğer internetten bağlantı desteği olmayacaksa gereksiz. SQLite kullan.
Evet. Eğer bir server yoksa, her kurulan makineye local server kurman lazım, port açman lazım vs vs. Gereksiz iş. SQLite kullan diyorum bu yüzden. Local yada remote server ihtiyacını ortadan kaldırır.Ben normal şartlarda bu programı yapıp bitirdikten sonra herhangi başka bir Windows bilgisayara kuracağım zaman o bilgisayara Microsoft SQL Server de kurulacaktı değil mi veri tabanına erişebilmek, ve duzenleyebilmek için?
MySQL, MSSQL, SQLite, hiç biri bu kadarcık veriyle sıkılmaz.Yani ben bu işte zor olan kısmın; veri tabanını, programın GUI'sini hazırlamak yani işte programı yapabilmek olduğunu düşünüyordum fakat şimdi işin asıl zor kısmı bu programı başka bir bilgisayarda stabil bir şeklide çalıştırabilmek gibi geliyor. Hadi işin Visual Studio kısmını .NET MAUI ile halledebilirim gibi geldi internetten biraz araştırdım. Fakat bu veri tabanı meselesi kafamı allak bullak etti gerçekten. Program, 50 civarı çalışanın bilgilerini tutacak, 20-30 civarı mal türünün bilgilerini tutacak ve "ilk" aşamada 100-200 civarı da bu 20-30 tane malın detaylı fiyat bilgisini, dikilen adeti gibi bilgilerini tutacak her gün.
Eğer tabloları GUI ile oluşturmak yerine SQ*L* * kullanarak oluşturuyorsan, zorlamaz. Komutlar üç aşağı beş yukarı aynı. Dökümanları online da var. Takıldığın yerde AI'ı da döküman için kullanabilirsin.Ben ise öğrencilik hayatım boyunca Microsoft SQL Server haricinde hiçbir veri tabanı programı ile uğraşmadım. Okulda da bu öğretildi, ben ekstra olarak kendimi geliştirebilme amacıyla Udemy üzerinden kurs takip ediyorum ve bu kurslarda da Microsoft SQL Server öğretiliyor.
O kadar karışık değil. Programı çalıştıran herkesin ona bağlanabilmesi lazım. Genelde uzak bir sunucuda, bir tane db oluşturursun sonrasında da uygulamadan bağlanırsın. En sağlıklı ve güvenli yöntem API ile bağlanmak olur sunucuya çünkü decompile ederek programı açık bakarlarsa bağlantı stringlerini görürler, onlarda bağlanabilir hale gelir. Ama senin durumunda bu tarz şeyler bence önemli değil. Daha küçük bir şey lazım sana, o yüzden SQLite yeterli diyorum.Benim normalde düşündüğüm şey; Veri tabanı uygulamasına sadece ben yani programı yapan kişi ihtiyaç duyar sanıyordum. Ben veri tabanını ve programı bitirdikten sonra bu programı direkt istediğim bilgisayara yükleyip kullanılabilmesini sağlayabilirim diye düşünüyordum fakat işler düşündüğümden de karışıkmış.
Aşağı yukarı doğru düşünüyorsun ama eksik düşünüyorsun. Eksik olduğun için doğru desem daha mantıklı olur.Yukarıda yazdıklarımdan yola çıkarak sizce doğru mu düşünüyorum? Yani programı yapıp bitirdikten sonra bu programı her şeyiyle beraber başka bir bilgisayarda kullanıma açabilmek meșaketli bir iş midir? Başka bir bilgisayarda güncel olarak kullandırtma düşüncemden şimdilik vaz mı geçmeliyim sizce? Dediğim gibi; ben normalde, programı yapıp bitirdikten sonra program, bir nevi "tak çalıştır" formatında kullanılabilir sanıyordum fakat öyle değilmiş. Cross-Platform olayı yüzünden söylemiyorum bunu. Onu dediğiniz gibi .NET MAUI kullanarak çözebilirim sanırım eğer forms'dan aşırı farklı değilse. Fakat bu veri tabanı konusunda çıkmaza girmiş gibi hissediyorum, işin içinden çıkamadım bir türlü.
SELECT id, name FROM users WHERE id = '{uid}'
şeklinde veri çekiyorsun mesela.Gerçekten çok teşekkür ederim. Kafamda ki birçok soruya cevap oldunuz.Evet. Eğer bir server yoksa, her kurulan makineye local server kurman lazım, port açman lazım vs vs. Gereksiz iş. SQLite kullan diyorum bu yüzden. Local yada remote server ihtiyacını ortadan kaldırır.
MySQL, MSSQL, SQLite, hiç biri bu kadarcık veriyle sıkılmaz.
Eğer tabloları GUI ile oluşturmak yerine SQ*L* * kullanarak oluşturuyorsan, zorlamaz. Komutlar üç aşağı beş yukarı aynı. Dökümanları online da var. Takıldığın yerde AI'ı da döküman için kullanabilirsin.
O kadar karışık değil. Programı çalıştıran herkesin ona bağlanabilmesi lazım. Genelde uzak bir sunucuda, bir tane db oluşturursun sonrasında da uygulamadan bağlanırsın. En sağlıklı ve güvenli yöntem API ile bağlanmak olur sunucuya çünkü decompile ederek programı açık bakarlarsa bağlantı stringlerini görürler, onlarda bağlanabilir hale gelir. Ama senin durumunda bu tarz şeyler bence önemli değil. Daha küçük bir şey lazım sana, o yüzden SQLite yeterli diyorum.
Aşağı yukarı doğru düşünüyorsun ama eksik düşünüyorsun. Eksik olduğun için doğru desem daha mantıklı olur.
Şimdi, sen sadece local ortamda server ile geliştirme yaptın şimdiye kadar, bu yüzden cloud ile bağlantı hakkında bir fikrin yok, ve bu yüzden programı taşıdığın her bilgisayarın local bağlanacağı fikrindesin. Bundan kaynaklı olarak da zor olacağını düşünüyorsun ve böyle kurulum yapsan sürekli, evet zor olacak.
Ancak MySQL/MsSQL gibi şeyleri en başından local kullanmıyoruz zaten. Bir sunucu oluyor ve bu sunucuya bağlanıyoruz. Böylece programı kuran herkes, program aracılığıyla o sunucuya bağlanıp işini görebiliyor. Sunucuya bağlanmak için de onlar bir ayar yapmak zorunda kalmıyor. Kur çalıştır yetiyor yani.
Şimdi senin durumunda lazım olan şey, eğer internet gerektiren özellikler olmayacaksa (senkronizasyon vs.) SQLite yeterli sunucusuz. Kullanımına dair internette rehber bulursun. Dikkat et kuracağın SQLite librarysi Cross-platform olsun. (Official library cross paltform mu değilim. Sonuçta dosya manipülasyonu söz konusu ve Windows dosya işlemleri methodlarına göre yazıldıysa başını ağrıtabilir MacOS'de vs.)
SQLite'ta sunucu servisi yok. Onun yerine direkt dosya okuyup yazıyorsun. Yine de komutlar MSSQL vs ile daha önce de dediğim gibi üç aşağı beş yukarı aynı.SELECT id, name FROM users WHERE id = '{uid}'
şeklinde veri çekiyorsun mesela.
.NET MAUI mevzusunda da, XAML kullanıyor designda ve MVVM patterniyle kullanman gerekiyor. Avalonia UI'da öyle. Alışması sürer biraz ama çok zor değil. AvaloniaUI tavsiye ederim bu arada.
*: SQL dediğimiz şeyin kendisi bir dil. Structured Query Language. MsSQL, MySQL, SQLite vs ise bu dil yapısını kullanan veri tabanı servisleri.
Çok uzun yazdım, bir yerde gözden kaçırdığım eksik yazdığım bir şey olabilir. Aklıma gelirse eklerim.
Aktarabilirsin ama birazcık uğraşman gerekir.Ben Microsoft SQL Server ile veri tabanımı oluşturup bitirsem(en azından ödev teslimimi yapana kadar) sonrasında bu veri tabanını herhangi bir SQL programına aktarabilir miyim? SQLite'a aktarabilir miyim mesela? ChatGPT'ye sorduğumda evet aktarabilirsin dedi ama size de sormak istedim.
Evet. Rahat alışırsın.Ekstra olarak eklemek istiyorum: SQL dediğimiz şeyin bir dil olduğunu biliyorum ve bu yüzden de diğer SQL programlarında alışma sürecinde sıkıntı yaşamayacağımı düşünüyorum doğru mu düşünüyorum? Bu konu hakkında yorum yapmışsınız ama tam net anlayamadım, daha doğrusu anladım ama teyit etmek için soruyorum.
Ödevi formu verdiğin şekilde kendi bilgisayarında çalışacak şekilde yap, teslim et. Daha sonrasında cross-platform için gerekli değişiklikleri yaparsın.Şuan da hiç Visual Studio'ya giriş yapmadım bu arada. Henüz program oluşturmaya başlamadım, veri tabanı oluşturuyorum. Programın arayüzünü oluşturmak vs. gözümü pek korkutmuyor. İşin kolay kısmı orası diye düşünüyorum, umarım yanılmıyorumdur.
Evet benim de aklıma bu şekilde yattı açıkçası. Tekrardan ilginiz için teşekkür ederim. Başka sorum yok..Ödevi formu verdiğin şekilde kendi bilgisayarında çalışacak şekilde yap, teslim et. Daha sonrasında cross-platform için gerekli değişiklikleri yaparsın.
Ödevim sadece hangi SQL ı kullanma konusunda bana seçim hakkı veriyor maalesef. Onun haricinde Visual Studio Windows Forms kullanmam zorunlu. Dediğiniz gibi en azından ödevi tamamlayana kadar bu yoldan devam edip sonrasında söylediğiniz şeylere kafa yorabilirim. Yani yapacağım program çok fazla profesyonel olmayacak zaten. Excelde tutulan bilgileri programda tutulmasını sağlayacağım ve Excel'e göre geçmiş bir bilgiye ulaşmayı, yeni bilgiler eklemeyi daha kolay, daha pratik hale getirmeye çalışacağım. Her bir veri deposu için ayrı ayrı Excel dosyaları tutmamasını sağlayacağım, hedefim bu yönde. Yani dayımın işini biraz pratiklestirmek aslında amacım. En azından bu projem için Visual Studio üzerinden devam etmek zorundayım. Sonrasında zaten şu işi mesleğim haline getirebilirsem sonrasında dediğiniz o işlerle bol bol uğraşmak istiyorum. Her ne kadar şuan bile pek beceremiyor olsam da uğraşırken inanılmaz bir keyif alıyorum.OS agnostik uygulamalar gelistireceksen bir defa kafadan Microsoft teknolojilerine skeptik yaklasacaksin.
Ikincisi client a DB kurulmaz. DB ya remote olur ya da client ta cache lenir.
Basit bir dosya sistemi, Couchbase lite ya da sqlite3 gibi client tarafta calisan lightweight alternatifleri dusunebilirsin.
Update etmek de problem. Yarin yeni bir ozellik istendiginde ya da bugfix yapacaginda elinde usb stick dayinin yolunu tutmaman da gerekiyor.
Okuldaki hocalar c# mssql surukle birak forms disinda teknoloji bilmedigi icin boyle oluyor biraz da.
Sana verebilecegim en iyi tavsiye sistemi web uzerinden dizayn etmen. Browser olan her cihazdan erisilebilir, update ve compatibility sorununu kafadan elemis olursun. Odev db kullanan proje gelistirmekse eger web buna aykiri degil.
Once odev icin gerektigi kadar yaparsin, sonra ustune koyar dayina kullandirirsin. Belki cok hosuna giderse biraz daha profesyonellestirip SaaS yaparsin.
Merhaba, diğer arkadaşlar kadar bilgili olmasam da ufak bir tavsiye vermek istedim. Ödev işini hallettikten sonra programı cross-platform işlevsel bir hale getirmek o kadar zor değil. Avalonia UI programın için daha uygun gözükse de bence internette yeterince kaynak yok, başlangıç dostu değil. .NET MAUI'da ise MVVM yerine MVC kullanırsan kodunu çok basit bir şekilde kopyala yapıştır yapıp, belki ufak değişiklerle kullanabilirsin. GUI programlamaya yöneleceksen tabi MVVM de öğren de ilk etapta MVC'yle başlarsan daha rahat edersin. Küçük çaplı uygulamalarda daha verimli. Sadece XAML öğrenmek biraz uğraştırabilir. O da zaten masaüstünde düzgün GUI yapmak istiyorsan kesin bilmen gereken bir dil. C#'la mobil geliştirme için de aynı şekilde.Ödevim sadece hangi SQL ı kullanma konusunda bana seçim hakkı veriyor maalesef. Onun haricinde Visual Studio Windows Forms kullanmam zorunlu. Dediğiniz gibi en azından ödevi tamamlayana kadar bu yoldan devam edip sonrasında söylediğiniz şeylere kafa yorabilirim. Yani yapacağım program çok fazla profesyonel olmayacak zaten. Excelde tutulan bilgileri programda tutulmasını sağlayacağım ve Excel'e göre geçmiş bir bilgiye ulaşmayı, yeni bilgiler eklemeyi daha kolay, daha pratik hale getirmeye çalışacağım. Her bir veri deposu için ayrı ayrı Excel dosyaları tutmamasını sağlayacağım, hedefim bu yönde. Yani dayımın işini biraz pratiklestirmek aslında amacım. En azından bu projem için Visual Studio üzerinden devam etmek zorundayım. Sonrasında zaten şu işi mesleğim haline getirebilirsem sonrasında dediğiniz o işlerle bol bol uğraşmak istiyorum. Her ne kadar şuan bile pek beceremiyor olsam da uğraşırken inanılmaz bir keyif alıyorum.