Summary

Bu belge, PROGRAMLAMAYA GİRİŞ başlıklı bir dersin notlarını içermektedir. SQL Server 2022 Express kurulumu, SSMS kurulumu, SQL veritabanı oluşturma ve C# ile SQL veritabanına bağlanma konularını kapsamaktadır.

Full Transcript

PROGRAMLAMAYA GİRİŞ Ders Sorumlusu: Öğr.Gör.Dr. Tolga DEMİRHAN PROGRAMLAMAYA GİRİŞ................................................................................................. 1 1. SQL SERVER 2022 EXPRESS KURULUMU..................................................................................

PROGRAMLAMAYA GİRİŞ Ders Sorumlusu: Öğr.Gör.Dr. Tolga DEMİRHAN PROGRAMLAMAYA GİRİŞ................................................................................................. 1 1. SQL SERVER 2022 EXPRESS KURULUMU................................................................................ 3 2. SSMS KURULUMU............................................................................................................. 5 3. SQL VERİTABANI OLUŞTURALIM........................................................................................... 8 4. TABLO İŞLEMLERİ............................................................................................................. 12 5. C# KULLANARAK SQL VERİTABANINA BAĞLANMAK................................................................ 15 6. C# KULLANARAK SQL VERİTABANINDAKİ BİR TABLOYLA ÇALIŞMAK............................................ 18 7. C#’TA VERİ İLE ÇALIŞIRKEN KULLANILACAK DİĞER ARAÇLAR..................................................... 20 8. ÖRNEK UYGULAMA.......................................................................................................... 22 Listele Metodu..................................................................................................... 24 Yeni_Kayıt Metodu.............................................................................................. 26 Sil() Metodu......................................................................................................... 29 Degistir() Metodu................................................................................................. 30 Temizle() Metodu................................................................................................. 33 Bu bölümde masaüstünde, web üzerinde ve küçük sunucularda çalışan uygulamaları geliştirmek ve üretmek için ideal olan ücretsiz bir sürüm olan SQL Server 2022 Express ve C# ta SQL veri tabanı işlemlerinde kullanılan araçlar tanıtılacaktır. Bu bağlamda öncelikle gerekli olan programların nasıl yüklendiği gösterilecek hemen arkasından Önceki hafta Access kullanarak oluşturulan veri tabanı MS SQL üzerinde oluşturulacaktır. Yani ilk olarak MY_DATA isimli bir veri tabanı daha sonra Kisiler isimli tablo ve alanları oluşturulacaktır. Son aşamada geçen hafta geliştirilen proje MS Sql veritabanı üzerinde kullanılacak şekilde düzenlenecektir. 1.SQL Server 2022 Express Kurulumu SQL Server 2022 Express sürümü için https://www.microsoft.com/tr-tr/sql- server/sql-server-downloads adresini ziyaret edilerek resimde gösterilen Şimdi İndirin düğmesine basılarak kurulum dosyasının bilgisayara indirilmesi sağlanır. Dosyayı indirdikten sonra çift tıklayarak SQL Server 20222 Express sürümünün kurlum işlemi başlatılır. Daha sonra sırasıyla aşağıdaki resimde gösterilen adımları takip ederek kurulumu tamamlayın. Kurulum tamamlandıktan sonra açılan iletişim penceresinde Install SSMS (SQL Server Management Studio) seçilerek SQL Server 2022 Express’in görsel yönetimi sağlayan arayüzün kurulumu da sağlanır. 2.SSMS Kurulumu SQL Server 2022 Express sürümü kurulumu bitince kurulumun tamamlandığını ifade eden iletişim penceresi açılır. Bu pencere kapatılmadan pencerenin altında bulunan Install SSMS tıklanarak SSMS’in download edileceği web sayfasına erişilir. Açılan web sayfasında Available Languages listesinde English seçimi yapılarak ilgili kurulum dosyasının bilgisayara indirilmesi sağlanır. İndirilen SSMS kurulum dosyasına çift tıklayarak kurulum başlatılır. Açılan iletişim penceresinde Install düğmesine basılarak kurulum başlatılır. Kurulum tamamlandıktan sonra açılan pencerede close düğmesine basarak süreci sonlandırılır. 3.SQL Veritabanı Oluşturalım Bu çalışma SQL Server Express editon kullanılacaktır. SQL Server Express sürümleri ücretsiz olarak internetten indirilip kullanılabilir. 2012 ile veritabanı oluşturmak için öncelikle SQL programı bulunup simgesi tıklatılarak programın çalıştırılması sağlanır. Başlangıç Menüsü – SQL Programını Arama Açılan karşılama ekranında ulaşılmak istenen Server isminin ve kullanıcı doğrulama yöntemi belirlenmesi istenir. Ben kuruluma aşamasında Windows oturumum ile ilişkilendirilmesini istediğim için Windows Authentication seçiyorum. Karşılama ekranında Connect komut düğmesine basıldığında veritabanına bağlanma işlemi gerçekleştiriliyor. Karşılama Ekranı Seçim sonrasında açılan Microsoft SQL Server Management Studio program arayüzü aşağıdaki şekilde görüntülenmektedir. r Microsoft SQL Server Management Studio SQL Server Management Studio programı arayüzünde bulunan Object Explorer penceresi, SQL Server üzerinde oluşturulan veritabanlarını, veritabanlarına erişim izinlerini, vb.. veritabanı yönetmek için kullanılan seçenekleri üzerinde barındırmaktadır. SQL Server Management Studio kullanarak SQL Server üzerinde bir veritabanı eklemek için Objec Explorer içerisinde bulunan Databases başlığında fare sağ tuşuna basarak açılan menü seçeneklerinden New Database başlığını seçmek yeterlidir. New Database New Database başlığı seçildikten sonra New Database isimli iletişim penceresi açılacaktır. Bu pencere kullanılarak yeni oluşturulacak database’in ismi, sahibi ve konumu gibi özellikler belirlene bilmektedir. Bu çalışmada kullanılacak veritabanı ismi olarak MY_DATA ismi belirlenmiştir diğer ayarlar değiştirilmeden varsayılan değerler ile kullanılmıştır. MY_DATA New Database penceresinde gerekli ayarlamalar bittikten sonra Ok komut düğmesine basıldığında Microsoft SQL Server Management Studio arayüzünde bulunan Object Explorer ekranının Databases başlığı altında yeni oluşturulan veritabanı görüntülenir. Object Explorer / MY_DATA SQL Servera ekli bir veritabanı üzerinde isim değiştirme, silme, görev ve politika belirleme gibi işlemler için ilgili veritabanı üzerinde fare sağ tuşuna basılarak açılan menü seçenekleri kullanılmaktadır. MY_DATA Seçenekleri 4.Tablo İşlemleri Var olan bir veritabanına tablo eklemek için Object Explorer penceresinde ilgili veritabanı başlığı açıldıktan sonra görüntülenen başlıklardan Tables üzerinde fare sağ tuşuna basılarak açılan menüden önce New sonra Table başlığını seçmek yeterlidir. MY_DATA- Tablo Eklemek New Table başlığı tıklandıktan sonra Object Explorer penceresinin sağında tabloya alan eklemek ve eklenen alanların özellikleri ile ilgili düzenlemeler yapmak için kullanılan pencere görüntülenir. Bu pencerede, tabloda kullanılacak alanlar satır satır eklenir. Her bir satırda girilecek alan ile ilgili düzenlenebilecek üç sütun vardır. İlk sütun Column Name sütunudur. Bu sütuna kullanılmak istenen alanın adı yazılır, ikinci sütunda Data Type sütunudur, buraya ilgili alanda bulunacak verinin tipi tanımlanır. Üçüncü sütunda ise bu alanı boş geçme, bu alana veri girmeme izni tanımlanır. Çalışmamız kapsamında tablodaki ilk alan olarak primary key olarak kullanmayı düşündüğümüz alanımızı tanımlıyoruz. Bunun Column Name sütununa kullanacağımız alanın adını yani id yazıyoruz. Bu satırdaki ikinci sütunda da Data Type olarak Bigint belirlenmiştir. Son sütunda da bu alan primary key olacağı için Allow Nulls yani boş geçme iznini kaldırıyoruz çünkü bu alan boş geçilemez. Daha sonra bu pencerenin altında görüntülenen Column Properties penceresinde Identity Specification başlığının detayındaki Is Identity özelliğini Yes yaparak bu alanın sahip olduğu değerin AutoIncrement / otomatik artan bir değer olduğunu belirtiyoruz. Son olarak ta menü üzerinde anahtar simgesi ile gösterilen primary key simgesine basılıyor. Böylece bu alanın primary key olduğu belirtiliyor. id isimli Primary Key Alanı Tabloya Eklendi İsim, soyad ve dogum_tarihi alanları da eklendikten sonra tablonun son görünümü aşağıdaki gibi oldu. Kisiler Tablosu Yapılan düzenlemeler sonrasında kaydet (Ctrl+S veya Menü üzerindeki Save komut düğmesi) komutu verildiğinde tablo isminin belirlenmesi için Choose Name başlıklı bir pencere açıldı. İlgili alana Kisiler yazıldıktan sonra Ok komut düğmesine basıldığında MY_DATA isimli veritabanının Tables başlığı altında oluşturduğumuz tablo aşağıdaki gibi görüntülenir. Tablo İsimlendirme Kisiler Tablosu Oluşturulan bir tabloda listeleme, ekleme veya düzenleme işlemleri Microsoft SQL Server Management Studio üzerinde menüler kullanılarak tapılabilmektedir. Örneğin, Kisiler tablosunun sahip olduğu kayıtları listelemek için tablo ismi üzerinde fare sağ tuşuna basılınca açılan Select Top 1000 Rows seçeneği kullanılabilir. Veya bu tablo üzerinde yeni kayıt eklemek, mevcut kayıtlar üzerinde değişiklik yapmak istenebilir bunun için de tablo ismi üzerinde fare sağ tuşuna basılınca açılan Edit Top 200 Rows seçeneği kullanılabilir. 5.C# Kullanarak SQL Veritabanına Bağlanmak C# programlama dilinde veritabanında yapılacak işlemlerde Systm.Data isim uzayından faydalanılmaktadır. Bu nedenle using kısmına System.Data isim uzayını eklemek gerekmektedir. SqlConnection: Varolan bir veritabanına erişmek için ilk olarak bağlantı oluşturulması gerekmektedir. Bu bağlantı ile bağlantı türü ve bağlantı yapılacak veritabanı belirtilir. SQL Veritabanına bağlantı için kullanılan sınıf SqlConnection’dır.SqlConnection sınıfının kullanımı için kod sayfasında using bölümüne Using System.Data.SqlClient; satırının eklenmesi gerekir. SqlConnection sınıfının örneğini oluşturmak için bir connectionstring değerine ihtiyaç duyulur. Düz bir metin gibi görünen bu connection string veritabanı ile ile ilgili bilgiler barındırır bu bilgiler kullanıma göre farklılık göstermektedir. Temel olarak Connectionstring: sunucu bilgisi + Veri tabanı Bilgisi + Yetkiler barındırır. 1- Sunucu Bilgisi: Connectionstring te sunucu bilgisi Server özelliğine atanır. Yerel pc üzerinde yani program geliştirilen makine üzerinde kurulu bir sql sunucusuna erişmek için ”.”, “localhost” veya management studio açıldığında görüntülenen sunucu adı bilgisi bu alan için kullanılır. Uzak bir pc üzerindeki sunucuya erişilmek istenseydi ilgil pc nin ip adresi ve port bilgisi buraya yazılmalıydı. Server=.; Server=localhost; // Benim makinemde Management Studio Karşılama Ekranında Görüntülenen sunucu adı: TDR2023CF48 Server=TDR2023CF48; 2- Veritabanı Bilgisi: Initial Catalog özelliğine değer ataması şiel gerçekleştirilir. Managemetn studio kullanılarak oluşturulan veritabanı adı buraya girilir. Initial Catalog=MY_DATA Database=MY_DATA 3- Yetki Belirleme: Bilgisayarımızda Windows oturumu açan herkesin ilgi veritabanına erişebilmesini istediğimiz için. Integrated Security özelliği True olarak belirlenmiştir. Integrated Security=True; 4- SQL Server kimlik doğrulaması ile bağlanılması istenirse User Id ve Password özelliklerininin connection string metnine eklenmesi gerekir. User Id=myUsername;Password=myPassword Aşağıda örneğimize uygun olarak hazırlanmış SQL connectionstring örnekleri hazırlanarak verilmiştir.  @"Data Source=.; Initial Catalog=MY_DATA; Integrated Security=True";  @"server=TDR2023CF48; Initial Catalog=MY_DATA; Integrated Security=True";  @"server=localhost; Database=MY_DATA; Integrated Security=True";  @"server=.; Database=MY_DATA; Integrated Security=True"; Aşağıda SQL Server üzerinde oluşturulan MY_DATA isimli veritabanına bağlan() isimli bir metot yazılarak bağlanılmıştır. Bu metotta veritabanı yolunun yanlış olması vb. durumlarda doğabilecek hataları kontrol edebilmek için try-catch yapısından da faydalanılmıştır. Kod satırlarını inceleyelim; 6.satırda Data isimi uzayı projeye ekleniyor 7.satırda SqlClient isim uzayı projeye ekleniyor. 14.satırda try-catch yapısı oluşturuluyor. 18.satırda SQL serverda oluşturulmuş olan MY_DATA isimli veritabanına ulaşmak için kullanılacak yol tanımlanıyor. 20.satırda SqlConnection sınıfının bir örneği con ismi ile oluşturuluyor ve bağlanacak veritabanının yol bilgileri parametre olarak tanımlanıyor. 21.satırda con isimli connection nesnesinin open() metodu çağrılarak bağlantının kurulması sağlanıyor. 27.satırda con isimli connection nesnesi, close() metodu kullanılarak kapatılıyor. 28.satırda “Veritabanına bağlandı “ mesajı gösteriliyor. 34.satırda con nesnesinin veritabanına bağlantısı ile ilgili bir problem olması durumunda gösterilecek mesaj tanımlanmıştır. 6.C# Kullanarak SQL Veritabanındaki Bir Tabloyla Çalışmak Aşağıdaki bölümde yapılan uygulamalar MY_DATA Veritabanındaki Kisiler isimli tabloda gerçekleştirilmiştir. Tablo aşağıda verilmiştir. Veritabanının MY_DATA veritabanı – Kisiler Tablosu SQL veritabanında bulunan tablolara SQL sorguları kullanarak erişilebilir. Ayrıca SQL sorguları kullanılarak erişilen bu tablodaki veriler üzerinde ekleme, çıkarma, güncelleme, arama vb.. işlemlerde yapılabilir. Tablolarda bu işlemleri yapmak için kullanılan nesne SqlCommand nesnesidir. SqlCommand nesnesi, çalışmak için iki parametreye ihtiyaç duyar. Bunlardan ilki SQL cümlesi ikinci ise veritabanına bağlantıyı sağlayan connection nesnesidir. Aşağıda cmd ismi ile oluşturulan bir SqlCommand nesnesi gösterilmiştir. SqlCommand nesnesinin EXECUTE/ yürütme metotları vardır bunlar:  ExecuteScalar: SqlCommand nesnesinde çalıştırılan SQL cümlesi geriye sadece bir değer döndürecekse bu metot kullanılır. Örneğin tablodaki eleman sayısını öğrenmek için veya bir silme işlemi sonrasında silinen kayıt sayısı öğrenilmek istendiğinde dönecek değer sadece tek olacağı için bu metot kullanılabilir. Aşağıda eleman sayısını mesaj olarak veren SqlCommand nesnesinin ExecuteScalar metodu kullanımı gösterilmiştir. Kod Sayfası Program çalıştırıldığında mesaj kutusunda eleman sayısı bilgisi gösterilmiştir. Program Görünümü  ExecuteReader: SqlCommand nesnesinde çalıştırılan SQL cümlesi geriye kayıt döndürecekse bu metot kullanılır. Dönen bu değerler SqlDataReader adı verilen nesne tarafından okunabilir. Bu işlem aşağıdaki şekilde tanımlanır. SqlDataReader nesnesinin sahip olduğu bu değerlere ulaşmak ve program içerisinde kullanmak için Read() metodu kullanılmaktadır. Örneğin Kisiler tablosundaki tüm kayıtları console üzerine eklemek için aşağıdaki kodları eklemek yeterlidir. Baglan() Metodu Program Arayüzü  ExecuteNonQuery: SqlCommand nesnesinde çalıştırılan SQL cümlesinde kayıt Update (Güncelleme)/Delete (Silme)/Insert(Ekleme) işlemi yapıldığında yani geriye değer döndürülmediğinde bu metot kullanılır. Aşağıda Kisiler isimli tabloya kayıt ekleme işlemi gösterilmiştir. Kod Görünümü Ekleme işlemi ile ilgili kodlar çalıştırıldıktan sonra veritabanı aşağıdaki şekilde görüntülenmiştir. Program Görünümü 7.C#’ta Veri İle Çalışırken Kullanılacak Diğer Araçlar SqlConnection, SqlCommand, SqlDataReader araçları ile bir veritabanına bağlanıp daha sonra bu veritabanında bulunan bir tabloda nasıl işlemler yapıldığı hakkında bir fikre sahibiz artık. Bu işlemleri yaparken geliştirilen uygulama ile veritabanı dosyasının sürekli bir biri ile bağlantılı olması gerekiyor. Eğer bağlantı koparsa uygulama programı çalışmayacaktır. Veya bu yapı ağ trafiğinin yoğun olduğu ağlarda sıkıntılara neden olacak en azından uygulamanın kendisi sürekli ağ üzerinden istek göndereceği için ağı meşgul edecektir. Peki, ağı minimum düzeyde meşgul etmek ve veriler ile bağlantısız olarak çalışmak mümkün müdür? SqlDataAdapter, DataSet, DataTable, DataRow ve DataColumn sınıfları bize ağı daha az meşgul eden çalışma imkânı sağlıyor. Şöyle açıklayalım, veritabanından veri, uygulamanın çalıştığı makinaya çekiliyor, daha sonra çekilen veri üzerinde istenilen düzenlemeleri yapılıp güncel verileri tekrar veritabanına yazılıyor. Bu şekilde veritabanı ile programın bulunduğu bilgisayar arasında fazla ağ trafiği olmadığı için işlemler daha hızlı gerçekleşiyor. SqlDataAdapter: SqlDataAdapter, veritabanından bir veya çok kayıt çekmek ve düzenlenmiş verileri aynı veritabanına yazmak için kullanılan sınıftır. Offline çalışmayla ilgili sınıflar içinde veritabanı ile iletişimde olan tek sınıftır. SqlDataAdapter sınıfını kod sayfasına eklemek için using kısmına System.Data.SqlClient isim uzayının eklenmesi gerekir. Örnek SqlDataAdapter yapısı aşağıda verilmiştir. SqlDataAdapter Isım=New SqlDataAdapter(Sql_Sorgu, BağlantıNesnesi) SqlDataAdapter örneği oluşturmak için iki parametreye ihtiyaç vardır. İlk parametre SQL sorgusu ikinci parametre ise Connection nesnesidir. SqlDataAdapter DataSet: SqlDataAdapter sınıfının veritabanından çektiği verileri programda veritabanı bağlantısı olmadan tutar. DataSet sınıfının kullanılabilmesi için using kısmında System.Data isim uzayının ekli olması gerekir. Dataset nesnesi bir veya birden çok tabloya sahip olabilir. Dataset yapısı; DataSet yeni_dataset=new DataSet(); şeklindedir. Datasetler DataAdapterlerden gelen verileri kendi oluşturacağı tablolarda barındırabilir. Aşağıda dap isimli SqlDataAdapter fill() metodunu kullanarak ds isimli datasetin yeni_tablom isimli tablosuna elde ettiği bilgileri aktarması işlemi gösterilmiştir. Dataset DataTable: DataSet'teki bir tabloyu temsil eder. DataTable sınıfının kullanılabilmesi için using kısmında System.Data isim uzayının ekli olması gerekir. Dataset’ten bağımsız olarak ta oluşturulup kullanılabilir. Aşağıda dap isimli SqlDataAdapter’ün fill() metodu kullanarak, dt isimli tabloya, elde ettiği bilgileri aktarması işlemi gösterilmiştir. DataTable 8.Örnek Uygulama MT_DATA isimli SQL Veritabanındaki Kisiler isimli tablo üzerinde ekleme, silme, güncelleme, listeleme işlemleri yapan programı yazınınız. İstenenler doğrultusunda öncelikle ekrana kullanıcının istediği işlemleri seçebileceği bir menü tasarlanması iyi olacaktır. Menü tasarlama işlemi için MENU isimli bir metot yazılsın. Menü seçenekleri de; 1- Kayıtları Listele 2- Yen Kayıt Ekle 3- Sil 4- Değiştir 5- Temizle olsun. Daha sonra kullanıcıdan çalıştırılması istenen işlemin numarası alınarak işlemler başlasın. Aşağıda sırayla bu görevleri yerine getirecek kodları yazalım. Aşağıda yazılacak projenin ana hatları gösterilmiştir. 6 ve 7. Satırda SQL Servera bağlanmak ve veriler ile çalışmak için gereken sınıfların kullanılması için gerekli olan isim uzayları eklenmiştir. 14.satırda MENU() metodu çağrılmıştır. İsim Uzayı ve Main Metodu Menu() Metodu MENU() metodu incelendiğinde; 18. satırdan 24.satıra kadar menü oluşturulmuştur. 25.satırda kullanıcıdan kullanmak istediği menünün sıra numarasını girmesi istenmiştir. 25.satırda girilen seçim değeri secim isimli string tipindeki değişkene atanmıştır. 28.satırda kurulan switch deyimi ile alınan değerlere göre ilgili metotların çağrılması sağlanmıştır. MENU() Listele Metodu MENU() Metodu 1 Yazılıp Enter a basıldıktan sonra alınan görüntü aşağıdaki resimde verilmiştir. Listele() Metodu Sonuçları Yeni_Kayıt Metodu Kayıt işlemi, yeni kaydın bir benzerinin veritabanında olup olmadığının kontrolü aşaması ve olmadığı takdirde tabloya kaydetme aşaması olmak üzere iki aşamalı bir işlemdir. Bu aşamalar sırasıyla aşağı verilmiştir. Yeni girilen kaydın TC Numarası daha önceden kullanılmış mı kontrolü için yazılan metot aşağıda verilmiştir. Kontrol İşlemi Yeni girilen bilgilerin veritabanına kaydetme işlemi aşağıda yeni_kayit() isimli metotta verilmiştir. Yeni Kayıt Yeni Kayıt Ekle Seçimi Kayıt Ekleme İşlemi Sonrası Görünüm Sil() Metodu TC Numarası girilen kaydı bulup silen bir metottur. Sil() Metodu Silme İşlemi Onayı Silme Sonrası Listeleme Degistir() Metodu Güncelleme işlemi yeni kayıt işleminde olduğu gibi iki aşamalıdır. İlk aşamada düzeltilen kaydın veritabanına kaydedilmeden önce kendisi haricinde bir benzerinin olup olmadığının kontrol edilmesi gerekmektedir. İkinci aşamada kaydedilme aşamasıdır. Aşağıda varmi_degistir() isimli metot ile güncellenen kaydın sahip olduğu TC numarasına ait başka bir kaydın veritabanında olup olmadığı kontrol ediliyor. varmi_degistir() degistir() isimli metot kullanılarak kayıt güncellenme işlemi yapılıyor. Degistir() Güncelleme işlemi ile ilgili program ekran görüntüleri aşağıda verilmiştir. Temizle() Metodu Console u temizleyerek sadece Menünün görüntülenmesinden sorumlu olan metottur. Temizle()

Use Quizgecko on...
Browser
Browser