SQL SERVER BAĞLANTISI VE TABLOLAR Şimdi ise Visual Basic Studio içerisinde bir SQL server oluşturup bağlanalım. Arkasından içerisinde tablo oluşturalım ki Accsess ten aldığımız verileri buraya kayıt edebilelim. Arkadaşlar aslında projemizde tamamen Accsess ya da SQL kullanabilirdik. Accsess kullanmamızın esas nedeni bir Visual Basic Studio içerisinden Accsess bağlantısı nasıl kurulur?, tabloları form üzerinde nasıl kullanılır onu göstermek idi. Tamamen Accsess üzerinde çalışmamamızın bir nedeni de üyelerin resimlerini de kaydedeceğiz. Accsess üzerinde form oluştursaydık bu kolaydı ama Basic üzerinden Accsess tablolarına bir resim yolu kaydettirmeyi bilmiyorum ole nesneleri ile denemeler yaptıysam da beceremedim. Ama SQL içerisinde resim kaydetmek çok kolay bunu zaten göreceğiz. Evet, Visual Studio muzu açalım Yeni proje İsmini Üye Kayıt diye değiştirelim Sekil_10-11 Program üzerindeki alanlarımızı resim üzerinde bir inceleyelim Sekil_12
Artık SQL server a bağlanma zamanı menü => Project => Add New Item (şekil_13) (Ctrl+Alt+A) local database seç ve ismini kayit olarak değiştir. (şekil_14) açılan pencereden finish diyerek sonlandır. Sekil_13 Sekil_14 Arkadaşlar burada local database (sdf) uzantılı veri tabanları oluşturuyor. Aynı şekilde SQL server bağlantısı kullanıyor. Service-based databes (mdf) uzantılı veri tabanları oluşturur
Aynı işlem kodlar ile de yapılır ancak sıralamayı iyi bilmek gerekir. Örnek verirsek Visual Studio 2005 te SQL databese bağlantısında; Bağlantı cümlemiz Sqlconnection iken 2008 deki service-besed database bağlantısı; Bağlantı cümlemiz Sqlceconnection oluyor. Tek fark ce ekinin alması bütün bağlantı kodlarımızda ce ekini getiriyoruz o kadar Yazıyı takip eden arkadaşlar için kodların 2005 için farklı olanını da yazacağım o zaman çok daha iyi anlaşılacak. Şimdi kaldığımız yerden devam edelim Add düğmesine tıkladık. Tıkladığımızda dataseti gösteren pencere açılır ve Finish ederiz. Şekil_14_1 Data menüsünden show data sources derseniz Datasource alanına bakarsanız yeni bir dataset oluştuğunu adının da kayitdataset olduğunu görürsünüz.(şekil_15)
Sekil_15 Aynı zamanda database Explorer da kayit.sdf veri tabanının dizininin görüntülendiğini görürsünüz (şekil_16) Sekil_16 Dikkat ederseniz tables alanı boş oraya kayıtların kaydedileceği tablo ve içerisindeki alanlarımızı oluşturacağız. Daha sonra bu alanlara tekrar bağlantı kurup dataset içerisinde görüntülenmesini sağlayacağız. Ama dilerseniz ondan önce Accsess veri tabanımızı da databese Explorer içerisine bir dâhil edelim sonra ikisinin birden datasetlerini oluştururuz. Yapmamız gereken işlemler sırası ile Database Explorer => Data connection üzerine sağ tıkla ve Add connection seç(şekil_17) açılan pencereden bağlantı türü olarak Microsoft Accsess Database File (oledb), borwse => Accsess dosyasını buluyoruz ve test connection düğmesiyle sınıyoruz.(şekil_18) Sekil_17
Sekil_18
Bu ileti bağlantının doğruluğunu belirtir Databese Explorer de bağlantımızın dizinini görebiliriz. Bu bize sadece bağlantı kurulduğunu ve Accsess veri tabanı içerisini göstermeye yarar. Ayrıca tablo içeriklerine de buradan ulaşabiliriz. (şekil_20) Sekil_20-21
DATASETLERİN OLUŞTURULMASI İlk önce Accsess veritabanı bağlantısının datasetini oluşturalım. İşlem sırası; Data sorurce=> Add new datasource(şekil_23) açılan pencereden databes seçilir (şekil_24) connection daha önceden bağlantısını yaptığımız Accsess veri tabanı olan 04_Tablolar.accdb seçilir (şekil_25) connection_string penceresinde next diyerek geçilir. database object kullanmak istediğimiz tablolarımızı işaretleyelim (şekil_26) Sekil_23
Sekil_24
Sekil_25 Sekil_26
Sekil_27 Gördüğünüz gibi bilgilerdataset datasource penceresinde yerini aldı. Bundan sonra Accsess içerisindeki hangi tablo veya alanı kullanmak istiyorsak datasource penceresinden tutup forma sürüklememiz yeterli olacaktır. Şimdi SQL içerisindeki kayit.sdf veri tabanımızın tablosunu oluşturalım. Onun datasetini oluşturmamıza gerek yok çünkü zaten o oluşmuş durumda.
Sekil_28 Biz sadece datasetin ulaşacağı tablomuzu yapalım. Sonra o tabloyu datasete göstereceğiz. İşlem sırası; databese Explorer pencersinden kayit.sdf=>sağ tuş create table (şekil_29) açılan pencereden alan adlarımızı ve veri türlerini belirliyoeuz. (şekil_30) data source penceresinden kayitdataset=>configure Dataset with wizard.. seçiyoruz (şekil_32) choose your databese objects, tablomuzu işaretliyoruz. (şekil_33) Sekil_29
Sekil_30
Sekil_31 Tablomuz ve alanları database Explorer da yerini aldılar. Şimdi onları dataset ile ilişkilendirelim Sekil_32
Sekil_33 Sekil_34 Arkadaşlar gördüğünüz gibi Accsess ve SQL bağlantılarımızı ve tablolarımızı başarılı bir şekilde Visual Basic içine almış bulunmaktayız. Bundan sonrası artık form tasarımı ve bu tabloları form içerisinde kullanma işi kalıyor. Ben üye kayıt formumda üyelerin nüfus cüzdanı bilgilerini de kullanacağım için ilk olarak bir nüfus cüzdanı içerisinde bulunan bilgilerin alanlarını oluşturdum. Eğer Accsess içerisine daha sonradan bir tablo eklemek istersek ne yapacağız?. Sakın ola Accsess i kaydettiğiniz yerden açarak bu işi yapmaya çalışmayın. Nedeni ise projenizi kaydettiğiniz için (yapmadıysanız bunu yapın) Visual C# Accsess in bir kopyasını kendi klasörüne kopyalar.(debug klasörü) ve işlemlerine ordan devam eder. Yani sizin ilk oluşturduğunuz Accsess ile bağlantısı kalmaz. Yeni tablo oluşturmak için ya debug klasörü içerisindeki Accsess dosyasını açarak,
Sekil_35 Ya da solution Explorer penceresinden 04_Tablolar.accdb çift tıklayarak ulaşırsınız. Bu şekilde Accsess içindeki değişikleri proje içine dahil edebilirsiniz. Sekil_36
Yalnız siz şu aşamada debug klasörüne baksanız dahi Accsess dosyasını orda göremezsiniz. Bunun için bilgilerdataset içerisinden bir tabloyu forma sürükleyip play tuşu ile projenizi birkez çalıştırmanız gerekir. Şimdi Accsess imiz içerisine bir tablo ekleyelim bunun için şekil_35 te gördüğünüz 04_Tablolar.accdb dosyasına çift tıklayalım ve Accsess açılsın İçerisine deneme adında bir tablo oluşturalım. Tabloda tekrar deneme adında bir alan oluşturun ve içerisine Deneme1 Deneme2 Deneme3 Alanları oluşturun ve Accsess ten çıkın. Sekil_37 databese Explorer penceresinden bilgiler.mbd=>refresh (şekil_37) Data source penceresinden bilgilerdataset=>configure dataset wiyh wizard (şekil_39) Açılan pencerede deneme adlı tabloyu işaretle (şekil_40) Sekil_38
Sekil_39 Sekil_40
Sekil_41 Şekilde de görüldüğü gibi deneme adlı tablomuz datasetin içine yerleşti. Şimdi SQL içinde oluşturduğumuz kayit.sdf veri tabanımıza diğer alanlarımızı eklemek için geri dönelim. Database Explorer =>kayit.sdf => tables => kayitlar üzerine sağ tıklayın açılan menüden edit table schema seçeneğini seçin ve yeni alanları eklemeye devam edin. (şekil_42) Sekil_42 Peki yeni ekleyelim? Üyelere ait ne kaydetmek istiyorsak alan olarak ekliyoruz arkadaşlar. Accsess içerisindeki tablo isimlerinin aynısını ekleyelim. Extradan açıklama, üye kayıt tarihi, ayrılış tarihi, resim gibi aklınıza gelebilecek, daha sonra aradığınız üyeyi bulmanızı sağlayacak bir bilgi olabilir.
Sırası gelmişken söyleyeyim Resim alanının data type kısmını image yapmayı unutmayın. Sekil_43 Alanlarımızı eklediysek sıra yeni alanlarımızı dasete aktarmaya geldi demektir. İşlem sırası; data source penceresi=> kayitdataset=>configuredataset with wizard (şekil_44) çıkan pencereden boş olan tabloları işaretleyin (şekil_45) datasource pencersinden=>kayitdataset=>edit dataset eith designer (şekil_46) açılan pencerede kayitlar tablosu üzerinde sağ tuş=>configure (şekil_47) açılan pencerede query builder tıkla (şekil_48) açılan pencerede kayitlar tablosunda boş olan alanları işaretle (şekil_49) next diyerek devam et bi işlemi bitir.
Sekil_44 Sekil_45
Sekil_46 Sekil_47 Sekil_48
Sekil_49 İşlem sonrası size bilgilendirmek için bazı onaylanmış veriler sunar bunlar tablo üzerinde ne gibi işlemler yapılabileceğini bildirir (şekil_50) Sekil_50 Bütün bunları bu şekilde yaparsanız yeni alanlarınız data source penceresinde datasetinize bağlanacaktır.
Sekil_51 Evet arkadaşlar Accsess e bağlanmak, SQL server e bağlanmak ve tabloları datasetlere bağlamak bu kadar kolay. Yaptığımız işlerin başka yolarlıda var toolbox penceresinden de bu bağlantıların nesnelerini forma atıp aynı işlemleri o şekilde de gerçekleştirebilirdik. FORM TASARIMI VE TABLOLARIN FORMA AKTARIMI İlk işimiz ilk başta minnacık gelen formumuzu biraz genişletmek olsun.
Forma birkez tıklayıp kenarında beliren tutmaçtan çekiştirerek genişletelim (şekil_52) Sekil_52 Genişlettikten sonra data source penceresinde kayitdaset altında seri alanımızı forma sürükleyelim (şekil_53)
Sekil_53 Sekil_54 FORM OLUŞTURMA Bir nüfus cüzdanı içinde olan bilgileri forma aynı şekilde sürükleyip hizalandırılmasını yapınız. Label etiketlerinin textlerini properties penceresinden düzeltin. Biliyorsunuz alan ve tablo isimlerinde Türkçe karakter kullanmadık şimdi onları text yazan yerlerden düzeltelim.
Sekil_55 Nüfus cüzdan bilgileri için gerekli alanlarımızı ve label düzenlemelerimizi yaptık. Yalnız burada dikkat ederseniz. Kan grubu, il, ilçe alanları açılan kutu (combobox) bu alanları data source penceresinden=> bilgilerdataset altındaki alanlardan oluşturdum.(şekil_56) Yani Accsess tablo alanlarıdır kendileri. Tarih alanları ise forma sürüklediğinizde uzun formatta gelir. Bunu alan seçili iken properties penceresinden => format sekmesinden sort olarak değiştirirseniz kısa formatta gözükecektir. Sekil_56 Arkadaşlar burası çok önemli Şimdi alanlarımızı nerden okuyacaklar nereye kaydedecekler nerden gösterecekler onları tanımlayacağız. kan grubu combobox ımızı seçelim (şekil_57) properties penceresinden data sekmesini bulalım datasource alanını bulalım ve yanındaki ok tuşuna tıklayalım (şekil_58) açılan pencereden kan_grububindingsource yazan teri tıklayalım (şekil_58) properties penceresinden data member alanını bulalım yanındaki ok tuşuna tıklayalım (şekil_59) açılan pencereden kan_grubu yazan yere tıklayalım (şekil_59) properties penceresinden databings yazan yeri bulalım + genişletelim text yazan yerdeki ok tuşuna tıklayalım (şekil_60) açılan pencereden kayitlarbindingsource altında kan_grubu yazan yere tıklayalım(şekil_60) Sekil_57
Sekil_58 Sekil_59
Sekil_60 Yaptığımız işlemlerin ne anlama geldiğini bir anlatalım. Combobox ımızın datasource kısmı verinin hangi tablodan okunacağını belirtir. Datamember kısmı belirtilen tablonun hangi alanını göstereceğini belirler. Text kısmı ise kaydın nereye yapılacağını ve gezinti sırasında nerden okuyacağını tanımlar. Bu şekilde diğer combobox larımızında kayıt ve okuma ayarlarını yapalım. Play tuşuna basarak combobox ların görevlerini yapıp yapmadığını kontrol edelim.(şekil_61) Sekil_61
Dikkat etmemiz gereken alanların doğru yerden okuma yapıp doğru yere kaydetmesini sağlamak. Tavsiyem form üzerine eklediğiniz bütün textboxları, comboboxları tarih alanlarını kontrol edin. Doğru yere kayıt ediyormu diye. Dilerseniz çalıştırıp formda duran gezinti ve kayıt çubuğu yardımı ilede bir deneme yapabilirsiniz. Şimdi üyelerimizin resimlerini de kaydedebileceğimiz ayarlamaları yapalım. İşlem sırası; Data source penceresinden=> kayitdataset=>kayitlar genişletin Resim alanınızı bulun Yanındaki ok tuşuna basın ve açılan pencereden Picture box seçeneğini seçin Alanı forma sürükleyin (şekil_62) Forma eklenen çerçevenin sağ üstünde bir ok vardır ona tıklayın açılan pencereden stretchimage seçeneğini seçin(şekil_63) Sadece çerçeve seçili iken properties penceresinden borderstyle ayarını fixed yapın.(şekil_64) toolbox penceresinden => dialog sekmesinde=> openfiledialog nesnesine çift tıklayarak forma dahil edin(şekil_65) Eklediğiniz çerçevenin altına buton ekleyerek text kısmını resim yükle olarak değiştirin Butona çift tıklayarak kod penceresine ulaşın Ve şu kodu oraya ekleyin HTML Code: //Resim dosyalarımızı openfiledialog nesnesi ile açacağız. openfiledialog1.title = "Resim Aç"; openfiledialog1.filter = "Jpeg Dosyası (*.jpg) *.jpg Gif Dosyası (*.gif) *.gif Png Dosyası (*.png) *.png Tif Dosyası (*.tif) *.tif"; if (openfiledialog1.showdialog() == DialogResult.OK) { picturebox1.image = Image.FromFile(openFileDialog1.FileName); label1.text = openfiledialog1.filename.tostring(); resimpath = openfiledialog1.filename.tostring(); }
Sekil_62 Sekil_63 Sekil_64
Sekil_65 Sekil_66 Bu şekilde formunuza oluşturduğunuz alanları sırasıyla ekleyin. Artık neresine ne koyacağınız size kalmış.