Subscribe:

26 Temmuz 2013 Cuma

LİNQ YAPISI İLE FARKLI TABLOLAR ARASINDA İLİŞKİ KURMA

Linq yapısına daha önceki ilgili yazımda değinmiştim. Kısaca; veritabanı işlemlerini uygulama katmanında yapmamıza olanak sağlıyordu. Bu yazımda yine örneklerle konu başlığını açıklamaya çalışacağım.

Örneğin;veritabanımızda öğrenci ve veli adında 2 tane tablomuz olsun.



Uygulamamız içerisinde nesneler oluşturup bu yapıyı kulanabilememiz için aynı tablo adlarına ait sınıflar oluşturulsun. Tablolardaki her alan adları bu sınıflarda değişken olarak girilsin.

Veli Sınıfı
Öğrenci Sınıfı

21 Temmuz 2013 Pazar

EĞİTİM VE DANIŞMANLIK FİRMALARI İÇİN BİLGİSAYAR PROGRAMI

Bu yazıda eğitim ve danışmanlık hizmeti veren firmalara, özel ders veren kişi ve kuruluşlara yönelik hazırlanmış bir yazılıma değinilecektir. Yazılım artırımsal bir geliştirme süreci içerisinde gelişimini tamamlamış ve talep edilirse ek özellikler de eklenebilecektir.
Genel olarak ekran görüntüleri üzerinden programı anlatacağım.
Özel Ders Ücret Takip Programı
Program, özel ders veren eğitim ve danışmanlık firmalarının ihtiyaçlarını karşılayabilecek niteliktedir. İsteğe göre hem bilgisayar üzerinde hemde sunucu üzerinde veritabanına sahip olabilecek şekildedir. Kullanıcı adı ve şifreyle programa girildiği için herhangi bir kişinin kayıtlara ulaşması engellenmiştir.
Programın kullanımı her yaştan kişinin kullanabileceği kolaylıktadır.
Programa giriş yapıldığında sizleri aşağıdaki ekran karşılayacaktır. (Veriler tamamen örnektir.)
Özel Ders Ücret Takip Programı


















Özel Ders Ücret Takip ProgramıDevam\Ücret Takip İşlemleri : Veritabanınızda bulunan öğrenci ve öğretmenlerin ders ve ücret takibi bilgileri bu form aracılığıyla girilir ve takip edilir. Aşağıda numaralandırma yoluyla daha ayrıntılı bir şekilde anlatılmıştır.

1.Öğrencilerin bulunduğu alandır. İşlem yapılacak öğrenciyi seçmeniz gerekmektedir.
2.Derslerin bulunduğu alandır. Dersler ayarlar kısmından eklenir. Aynı zamanda ders ve öğretmen eşleştirmeleride ayarlar kısmından yapılır.
3.Öğretmenlerin bulunduğu alandır. Dersi seçtiğiniz anda bütün öğretmenlerin içerisinden sadece o derse eşleştirilmiş öğretmenler listelenir.

13 Temmuz 2013 Cumartesi

LINQ YAPISI - SORGU OLUŞTURMA

Linq ile ilgili daha önce bir yazı yazmıştım. Linq yapısını kısaca anlatmaya çalıştığım o yazıya buradan ulaşabilirsiniz.
Bu yazıda da bir linq sorgusu nasıl oluşturulur ondan bahsedeceğim. Oluşturacağımız sorguları veri kaynağından istediğimiz veriyi elde etmek için kullanacağız.
İlk önce verileri ilgili veritabanından elde etmemiz gerekecek. Linq yapısıyla veritabanından elde ettiğimiz verileri nesneler haline dönüştüreceğiz.


Yukarıdaki örnekte "Ogrenci" isminde bir sınıf oluşturdum. Veritabanı tablolarımda bulunan alanları burada değişken olarak tanımladım. Sonra sınıfın yapıcı yordamına bu alanları parametre olarak verdim. Bu sınıfın içerisinde  List<Ogrenci> logrenci=new List<Ogrenci>(); diye bir değişken tanımladım. Bu değişkeni tanımlama sebebmii aşağıda açıklayacağım.


Yukarıdaki kod bloğunda veritabanındanki "ogrenci" tablosundan çektiğim verileri yukarıda bahsettiğim logrenci dizisine ekliyoruz. Bir kere verileri eklediğimiz zaman artık veritabanı ile işimiz kalmıyor. Sorgularımızı artık veritabanına bağlanmayla değilde linq yapısını kullanarak gerçekleştireceğiz.



Yukarıdaki kod bloğunda ise bütün öğrencileri dataGrid nesnesi içerisine atıyoruz.
var vogrenci = from c in Ogrenci.logrenci select c;
sorgu yapısıyla bütün öğrencileri foreach döngüsü içerisinde teker teker dataGrid içerisine ekliyoruz.
Artık her türlü sorgulama işlemlerimizi bu yapıyı kullanarak gerçekleştirebiliriz. Bir örnek daha verecek olursam: adı "Sadık" olanları messagebox içerisinde gösteren kod parçası aşağıdaki gibidir.
Aslında dikkat ederseniz bu yapı sql yapısına oldukça benziyor. Where ifadesi de burada sql de olduğu gibi şart ifadesi olarak kullanılmaktadır.

Daha bir çok örnek verilebilir bu yapıyla ilgili. Ama asıl üzerinde durulması gereken bütün sorgulama işlemlerimizi sürekli veritabanına bağlanma şeklinde değilde linq yapısını kullarak rahatlıkla gerçekleştirebiliyor olmamızdır. Bu bize hem veritabanındaki sorgulama işlemlerini programlama dili çatısı altında oluşturmamıza olanak sağlıyor hemde hızlılığı ve verimliliği ciddi bir şekilde artırıyor.

5 Temmuz 2013 Cuma

STORED PROCEDURE OLUŞTURMA - SQL DİLİNDE IF YAPISI

Stored procedure güvenlik, hızlılık ve verimlilik gerektiren veritabanı uygulamalarında sıkça kullanılan bir yapıdır. Bu yapı ile ilgili daha önce yazdığım yazıya buradan ulaşabilirsiniz.
En basit ifadeyle stored procedure şu şekilde oluşturulur.

CREATE PROCEDURE [Procedure İsmi](
--Girilecek parametre isimleri buraya yazılacak
)
AS
BEGİN
--İlla BEGİN-END kullanmak zorunda mıyız? -Hayır, kullanılmasada olur.
END

Stored procedure ler bir defa derleniyor demiştik. Eğer her defasında derlenilmesi isteniyorsa "AS" den önce "WITH RECOMPİLE" kullanılması yeterli.

Şimdi aşağıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerine begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.

Şimdi yukarıdaki örnek resime odaklanalım. "spOgrenciEkle" isimli stored procedure oluşturulmuştur. Begin-end içerisine girdiğimizde "Declare" kod yapısı ile @bak isimli değişken oluşturulmuştur. Bu arada değişkenler oluşturulurken "declare" komutu başa yazılarak oluşturulur. Değişken isminin önünde de "@" sembolü kullanılır. Aynı zamanda değişkenin veri tipi de değişken isminden sonra belirtilir.(Aşağıdaki örnek: "declare @bak int"). Sonrasında öğrenciler tablosunda aynı T.C. Numarasına ait kayıt olup olunmadığına bakılıyor. Select sorgusundan dönen değeri @bak değişkenine atamıştık. Eğer @bak değişkeninden dönen değer sıfır olursa aynı veri olmadığı anlamına gelir. Eğer o şekildeyse veritabanına kayıt gerçekleştirmek için ilgili sql ifadesi kullanılmıştır.
IF yapısı normal programlama dillerindeki yapıya çok benzerdir. "{}" kapsam işaretlerinin yerini begin-end takısı almıştır. Şart kodlarımızı begin-end arasına yazıyoruz.
Stored procedure çağırmak için "exec" ifadesini kullanıyoruz.
exec <stored procedure ismi> varsa parametreler.
Aşağıdaki sorgu sonucunda dönen değer "0" olduğuna göre bu demek oluyorki veritabanında bu tc numarasına ait kayıt yokmuş ve bu sebepten dolayı veritabanı kayıt eklenmiş bulunmaktadır.
Bu yazıda sizlere kısaca stored procedure oluşturmadan bahsettim. Aynı zamanda sql de IF şartlı ifadesini ve değişken oluşturmayada değinmiş olduk. Stored procedure kavramıyla ilgili sorularınız varsa yorum olarak yazabilirsiniz. Bir başka yazıda görüşmek üzere. İyi çalışmalar.

STORED PROCEDURE

sadık dereköy, stored procedure anlatımı
Stored Procedure yapısının faydaları oldukça fazladır
Bu yazımda özellikle orta ve büyük çaplı projelerde olmazsa olmazlardan olan stored procedure yapısına değineceğim. En basit açıklamayla bu yapıyı bizim uygulamalarda kullandığımız fonksiyon yapısı gibi görebilirsiniz. Zaten kelime anlamı da saklı yordam, methot anlamalarına geliyor.
Konuya giriş yapmadan önce kendimden örnekler vererek bu yapıya giriş yapmak ist
edim. Ben bir proje yaparken ilk başlarda temel sql ifadelerini kullanarak veritabanı işlemlerini gerçekleştiriyordum. Nasıl oluyordu bu? Mesela en basit ifadeyle veritabanına kullanıcı eklediğinizi düşünün. "İnsert" ifadesini kullanarak işlemi gerçekleştiriyoruz. Sonra eklediğimiz kaydın veritabanında olup olmadığını kontrol etmemiz gerektiğinin farkına varıyorsunuz. Onun için "select" ifadelerini kullanarak tekrar veritabanına bağlanıp o kaydın veritabanında olup olmadığının kontrol edilmesine ihtiyaç duyuluyor. Bunun gibi daha bir çok veritabanına sürekli bağlanıp işlem yapılması gereken durumlar ortaya çıkıyor. Durum böyle olunca stored procedure kavramını kullanmak en mantıklı ve sağlıklı çözüm oluyor. O kadar fazla faydası var ki şimdi onlardan bir kısmına kısaca değineceğim.
Stored Procedure'ler veritabanı sunucularında tutulduğu için çok hızlı çalışırlar. Bunun sebeplerinden biri, bir defa derlendikten sonra bir daha derlenmeye ihtiyaç duymamalarıdır. Bir de uygulama katmanında yazmış olduğumuz koda bakalım. Burada sql kodu her çağırmada tekrar tekrar derlenmek zorunda. Büyük çaplı projelerde oluşacak zaman ve performans kaybını siz düşünün.
Programlama dili ile veritabanı dili dediğimiz kavramları birbirinden ayrı tutmaya olanak sağlıyor.
Güvenlik açısından da kullanılması mutlaka önerilen bir yapıdır. Tablo isimlerimizi ve alanların görülmemesi için bu yapıyı kullanmak şart.
Bir kere yazıp bir yerde kullanmak gibi daha bir çok faydası olan bu yapıyı kısaca anlatmak istedim. Farkı büyük çaplı projelerde daha belirgin olan bu yapıyı karmaşık veritabanı işlemleri gerektiren projelerle uğraşırken mutlaka öğrenmeniz gerekecektir.

2 Temmuz 2013 Salı

LINQ YAPISI


LINQ(Language Integrated Query-Dile Entegre Edilmiş Sorgulama)
Bu yapı bize veritabanı üzerinde gerçekleştirdiğimiz gelişmiş sorgulama işlemlerini programlama dili ile oluşturduğumuz veri yapılarımız üzerinde gerçekleştirme fırsatını sunuyor.
Bu veri yapısını C# ile nasıl kullanmaya başladım ondan bahsedeyim biraz. Sunucu üzerindeki veritabanına sürekli gidip gelerek sorgulama işlemleri yapmam gerektiği durumlar oluyordu. İnternet bağlantısının düşük olduğu durumlarda işlemler oldukça büyük zaman alıyordu. Bu da tabi kullanılabilirliği ve hızlılığı olumsuz yönde etkiliyordu. Araştırdığımda bu linq yapısı karşıma çıktı. İlk başta yapı biraz karmaşık gelsede sonra çok faydalı bir şey olduğunu anladım. Sadece verileri bir kez veritabanından yükleyip uygulamam üzerinde uygun sınıflar oluşturarak veritabanına bağımlılığı azalttım.
Dolayısıyla bu teknoloji, veritabanı ile kullanılan programlama dili arasıda kodsal bir bütünlük sağlıyor. Bu sayede veritabanındaki sorgulama işlemlerini programlama dili çatısı altında kodlarla yönetebilir hale geliyoruz. LINQ teknolojisi kullanılmadığı durumlarda uygulama katmanı ile veri katmanı birbirinden bağımsız bir görüntü çiziyor.
LINQ yapısı sayesinde veritabanından çektiğimiz verileri nesneler haline dönüştürüyoruz.
Bu yapıyı zamanım oldukça örnekler üzerinde göstererek anlatmayı hedefliyorum. O zaman daha iyi anlaşılacaktır. LINQ ile ilgili farklı konuları ayrı bir yazı dizisi şeklinde ele alıp aşağıdaki gibi bağlantı vererek paylaşıyor olacağım.

LİNQ YAPISI İLE SORGU OLUŞTURMA
LİNQ YAPISI İLE FARKLI TABLOLAR ARASINDA İLİŞKİ KURMA