• Visual Studio'da sorgu oluşturma c. Visual Studio kullanarak veritabanındaki verileri düzenleme. Yazılım Uygulaması

    Dipnot: Bu dersi tamamladıktan sonra şunları yapabileceksiniz: SQL Server Management Studio Query Builder'ı kullanarak sorgular oluşturabileceksiniz Veritabanı sistem tablolarından veritabanı bilgilerini dinamik olarak al Kullanıcı giriş formatına dayalı olarak basit sorgular oluştur Kullanıcı girişini ve karmaşık dinamik sorguları filtreleyebileceksiniz Kullanım için verileri ayrıştırıp yeniden biçimlendirebileceksiniz. filtrede, veritabanını "SQL enjeksiyonu" saldırılarından koruyun, sorguyu iletmek için sp_executeSql prosedürünü kullanın

    Bir önceki derste nasıl arttırılacağı hakkında konuşmuştuk. verim istekler. Artık, saklı yordamlarda veya görünümlerde önceden oluşturulmuş sorguları kullanarak kullanıcılara uygulamanızdan en yararlı bilgileri sağlamak için verimli bir sorgu kümesi oluşturmayı biliyorsunuz.

    Ancak, en basit uygulamalar dışında tüm uygulamalarda, kullanıcıların isteyebilecekleri tüm olası bilgi türlerini ve bunları nasıl filtrelemek ve düzenlemek isteyebileceklerini önceden bilmek imkansızdır. Tüm bu olasılıkları sağlamaya çalışmak yerine, uygulamanın raporladığı bilgiler üzerinde kullanıcıya kontrol verebilirsiniz. Bu ders, kullanıcının iş akışı sırasında yaptığı seçimlere dayalı olarak sorguların dinamik olarak nasıl oluşturulacağını açıklar.

    Sorgu oluşturmak için kullanıcı arabirimi

    SQL Server Management Studio, sorgu oluşturmak için gelişmiş bir arabirim içerir. Sorguların dinamik olarak nasıl oluşturulabileceği hakkında fikir edinebilmeniz için bu arayüzü inceleyelim. Uygulamanızın her şeye ihtiyacı olmayacak kontroller SQL Server Management Studio tarafından sağlanır. Aslında, kullanıcıların tercihlerini en iyi nasıl kısıtlayacağınız konusunda dikkatlice düşünmeniz gerekir.

    SQL Server Management Studio Query Builder'ı Kullanarak Sorgu Oluşturma

    Veritabanı tabloları hakkında bilgi alma

    Kullanıcıya bir seçenek listesi sağlamak için, uygulamanın veritabanı tabloları hakkında bilgi alması gerekebilir. Bu bilgiyi almanın birkaç yolu vardır. Bu yöntemlerden en önemlisi INFORMATION_SCHEMA şemasının kullanılmasıdır. Bu şema herhangi bir veritabanında standarttır.

    INFORMATION_SCHEMA'yı kullanma

    INFORMATION_SCHEMA şeması her veritabanında bulunan özel bir şemadır. Bazı veritabanı nesnelerinin tanımlarını içerir.

    INFORMATION_SCHEMA, ANSI uyumlu herhangi bir veritabanı motorundan bilgi almak için tasarlanmış ANSI standardına uygundur. SQL Server'da INFORMATION_SCHEMA, veritabanının yapısı hakkında bilgi içeren sys* veritabanı tablolarını sorgulayan bir dizi görünümden oluşur. Bu tablolar, diğer herhangi bir veritabanı tablosu gibi doğrudan sorgulanabilir. Ancak çoğu durumda *sys tablolarından bilgi almak için INFORMATION_SCHEMA şema görünümlerini kullanmak daha iyidir.

    Not. INFORMATION_SCHEMA şeması bazen gerekli olmayan tabloları sorgular, bu da performansı olumsuz etkiler. Bu bölümün bir sonraki örneğinde, bu özellikle önemli değil çünkü uygulama zaten kullanıcı girdisini bekliyordu. Ancak, uygulamanız için hız önemli bir husussa, bu dikkate alınmalıdır.

    Tabloda yer alan sütunlar hakkında bilgi almak için kullanılan temel T-SQL kodu:

    Tablonun şemasını almak için TABLE_SCHEMA alanını seçmeniz gerektiğini unutmayın. Bu, gelecekte benzer sorgular yapmak için değerli olabilir. Bu bölümde açıklanan yöntemleri denemek için Visual Studio'da yeni bir proje oluşturun.

    Yeni bir Visual Studio projesi oluşturun
    1. Başlat menüsü komutlarından Tüm Programlar, Microsoft Visual Studio 2005, Microsoft Visual Studio 2005'i seçin.
    2. Visual Studio menüsünden Dosya, Yeni, Proje komutlarını (Dosya, Oluştur, Proje) seçin.
    3. Proje Türleri panelinde, Visual Basic düğümünü (Visual Basic Solutions) genişletin ve Şablonlar panelinde Uygulama şablonunu seçin. Projeye Chapter7 adını verin ve Tamam'a tıklayın.
    4. Bu örneğin uygulaması, \Chapter7\DynQuery klasöründeki örnek dosyalarda bulunabilir. Form1.vb dosyasından aşağıdaki işlemler için kodu kesip yapıştırabilirsiniz.
    Tabloların ve Görünümlerin Listesini Alma

    Tipik olarak, kullanıcının dinamik sorgu için yalnızca sütunları değil aynı zamanda tabloyu da seçmesine izin vermeniz gerekir, bu nedenle kullanıcıya bir tablo listesi göstermeniz gerekir. Gerekli bilgiler aşağıdaki sorgu kullanılarak elde edilebilir:

    INFORMATION_SCHEMA.TABLES'TEN TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE SEÇİN

    Bir uygulamada bu sorgu şu şekilde kullanılabilir.

    Tabloların bir listesini alma

    Yukarıdaki Visual Basic kodu, yürütülecek SQL dizesiyle com adlı bir SqlCommand nesnesini başlatır ve ardından SqlCommand nesnesini yürütür. Bu, bir uygulama içinden bir T-SQL deyimini yürütmenin en kolay yoludur.

    Bir alıştırma olarak, formun Load prosedüründen alınan şemaları ve tabloları, uygulamanın kullanıcı arayüzüne bir form olarak yerleştirebiliriz, böylece kullanıcı şemayı ve tabloyu çalışacak şekilde seçebilir. Bu bölümdeki örnek için, kullanıcının Satış şemasını ve Müşteri tablosunu seçtiğini varsayıyoruz.

    Kullanıcı bir tablo seçtikten sonra, sorguda tablo adı olarak kullanıcının girdisi kullanılarak aynı yöntem kullanılarak o tablo için sütunların listesi alınabilir. Bunu yapmak için, sorgu dizesine bir proxy girin ve ardından bu proxy'yi String.Format çağrısıyla değiştirin. Aşağıdaki kodda, sorgu dizesindeki yer tutucu (0)'dır.

    Sütunların bir listesini alma
    1. Aşağıdaki RetrieveColumns prosedürünü RetrieveTables prosedürünün altındaki koda ekleyin:

      Sub RetrieveColumns(String Olarak Tablo Adına Göre) MyConnection As New SqlClient.SqlConnection(_ "Data Source=.\SQLExpress;" & _ "Initial Catalog=AdventureWorks;Trusted_Connection=Evet;") sqlStr'yi String Olarak Dim sqlStr = "SELECT TABLE_SCHEMA, TABLE_NAME , COLUMN_NAME, " + _ "ORDINAL_POSITION, DATA_TYPE " + _ "FROM INFORMATION_SCHEMA.COLUMNS " + _ "WHERE (TABLE_NAME = "(0)")" Dim tableColumns As New DataTable Dim da As New SqlClient.SqlDataAdapter(_ String.Format (sqlStr, TableName), MyConnection) da.Fill(tableColumns) i için As Integer = 0 To tableColumns.Rows.Count - 1 ile tableColumns.Rows.Item(i) Console.WriteLine("(0) (1) (2) )", _ .Item(1), .Item(2), .Item(3)) Bir Sonraki Bitiş İle Bitir Alt

    2. Form1_Load yordamında, RetrieveTables yordamından sonra RetrieveColumns yordamına aşağıdaki çağrıyı ekleyin:

    Bu yazıda LINQ'un ne olduğunu ve onunla listeleri nasıl sorgulayacağınızı öğreneceksiniz.

    LINQ nedir? Language Integrated Query (LINQ), SQL'e benzer bir sorgu dili sözdizimi eklemek için tümleşik bir sorgu dili veya daha doğrusu tartışmalı bir Microsoft projesidir. Spesifik tanım, bu araç tabloları ve veri listelerini sorgulamayı nispeten kolaylaştırır, mutlaka bir veritabanı olması gerekmez.

    Microsoft'un örnekleri küçük ama önemli bir ayrıntıyı gözden kaçırıyor. Bir veri kümesiyle çalışmak için, tanımı Sharepoint sunucusunda bulunan bir liste veya kitaplık için SPMetal.exe kullanılarak elde edilebilen DataContext yapısını kullanmamız gerekir. Yani öncelikle bu veri tipini tanımlamamız ve ardından bir sorgu oluşturmamız gerekiyor.Genel olarak MVS'de çalışmak için özel bir yardımcı program kullanmanızı öneririm: Imtech Get SPMetal Definition Extension .

    Çalışmak için bir tür listeye ihtiyacımız var. Basit bir liste kullanalım - "özel liste"; başlık - "Basit itiraz"; varsayılan alanlar: Numara, Ad.

    Ve böylece, manipülasyonlarımızın sonucunu gözlemleyeceğimiz basit bir tane oluşturalım (ilgili sayfaya bakın). Proje oluştururken izole edilmiş bir güven modeli seçeceğiz, eğer listelerle veya diğer düğümlerden gelen verilerle çalışma ihtiyacı varsa, o zaman çiftlik için bir proje oluşturmak gerekir.

    Ardından, SPMetal.exe veya stüdyo için bir eklenti kullanarak bir "SimpleReversal.cs" sınıf dosyası oluşturacağız. Microsoft.Sharepoint.Linq kütüphanesine bir referans ekleyelim. Daha fazla bilgi MSDN sitesinde bulunabilir.

    Bir Oluşturma işlevi ve my_mess oluşturalım. Son fonksiyonda, gösterim için verileri oluşturacağız.

    // işlevi aşırı yükle
    korumalı geçersiz kılma geçersiz kılma (HtmlTextWriter yazıcı)
    {
    temel .Render(yazar);
    benim_mess(yazar);
    }

    // Liste fonksiyonumuz
    genel geçersiz my_mess(HtmlTextWriter yazar)
    {
    // Bağlam oluştur
    DataContext verisi = yeni DataContext("http://localhost" );
    // Kökteki sitedeki ilgili listeyle ilişkilendirin
    varlık listesi<Элемент>Simple_Message = data.GetList<Элемент>("Basit kullanım");
    // Sorguyu yürütün - "Basit erişim" listesinden tüm satırları seçin
    var sorgu = Simple_Message'daki karmaşadan
    mesajı seçin;
    // sorgu sonucundaki tüm verileri göster
    foreach(sorgudaki var öğesi)
    {
    yazar.WriteLine( "Liste öğesi:"+ elem.Name.ToString());
    yazar.WriteBreak();
    }

    }

    Projeyi derleyip sayfaya ekliyoruz. Sonuç olarak, listedeki tüm satırlar görüntülenecektir.

    Devamı daha sonra (makale bitmedi)...

    Yerel bir Microsoft SQL Server veritabanı oluşturma örneğiMS Görsel Stüdyo

    Bu konu, MS Visual Studio kullanarak SQL Server türünde bir veritabanı oluşturma sorununun çözümünü gösterir. Aşağıdaki sorular değerlendirilmektedir:

    • MS Visual Studio'da Sunucu Gezgini penceresiyle çalışmak;
    • SQL Server Veritabanı türünde yerel bir veritabanı oluşturma;
    • veritabanında tablolar oluşturmak;
    • tablo yapılarını düzenleme;
    • veritabanı tablolarını birbirine bağlamak;
    • MS Visual Studio kullanarak tablolara veri girme.

    Görev

    MS Visual Studio'nun araçlarını kullanarak, Education adıyla MS SQL Server türünde bir veritabanı oluşturun. Veritabanı Öğrenci ve Oturum olmak üzere iki tablo içerir. Tablolar bir alanla birbirine bağlıdır.

    İlk tablonun yapısı "Öğrenci".

    İkinci tablonun yapısı “Oturum”.

    Verim

    1. MS Visual Studio'yu indirin.

    2. Etkinleştirpenceresunucu gezgini

    Veritabanlarıyla çalışmak için Microsoft, hafif bir veritabanı sunucusu Microsoft SQL Server sunar. Microsoft SQL Server'ın farklı sürümleri vardır, örneğin: Microsoft SQL Server 2005, Microsoft SQL Server 2008, Microsoft SQL Server 2014 ve diğerleri.

    Bu sürümleri Microsoft web sitesinden www.msdn.com indirebilirsiniz.

    Bu sunucu, veritabanlarıyla çalışmak için harikadır. Ücretsizdir ve SQL Server Yönetim Aracını kullanarak veritabanları oluşturmak ve yönetmek için grafiksel bir arayüze sahiptir.

    Her şeyden önce, bir veritabanı oluşturmadan önce, Sunucu Gezgini yardımcı programını etkinleştirmeniz gerekir. Bunu yapmak için MS Visual Studio'da aramanız gerekir (Şekil 1)

    Görünüm -> Sunucu Gezgini

    Pirinç. 1. Sunucu Gezgini'ni arayın

    Çağrı sonrasında Server Explorer penceresi Şekil 2'deki gibi yaklaşık bir görünüme sahip olacaktır.

    Pirinç. 2. Sunucu Gezgini penceresi

    3. "Eğitim" veritabanının oluşturulması.

    Microsoft SQL Server Veri Sağlayıcısına dayalı yeni bir veritabanı oluşturmak için Veri Bağlantıları düğümüne tıklayın ve ardından “ Yeni SQL Server Veritabanı Oluştur..." (Şek. 3).

    Pirinç. 3. Bir SQL Server veritabanı oluşturmak için komutun çağrılması

    Sonuç olarak, pencere " Yeni SQL Server Veritabanı Oluşturun» (Şek. 4).

    Pencere ("Sunucu Adı" alanında) bilgisayarınızda yüklü olan yerel sunucunun adını gösterir. Bizim durumumuzda bu isim “SQLEXPRESS”.

    "Yeni veri tabanı adı:" alanı, oluşturulacak veri tabanının adını belirtir. Bizim durumumuzda bu isim Eğitim'dir.

    Windows Kimlik Doğrulamasını Kullan seçeneği değişmeden bırakılmalıdır ve Tamam düğmesine tıklayın.

    Pirinç. 4. MS Visual Studio 2010 kullanarak yeni bir SQL Server 2008 Express veritabanı oluşturma

    Yapılan işlemlerden sonra Server Explorer penceresi Şekil 5'deki formu alacaktır. Şekil 5'ten de görüleceği üzere Education veritabanı adı ile

    sasha-pc\sqlexpress.Education.dbo

    Pirinç. 5. Education veritabanını ekledikten sonra Server Explorer penceresi

    4. Eğitim veritabanı nesneleri.

    Eğitim veri tabanını genişletirseniz (“+” işareti), aşağıdaki ana nesnelerin listesini görebilirsiniz:

    • Veritabanı Diyagramları - veritabanı diyagramları. Diyagramlar, veritabanı tabloları arasındaki ilişkileri, farklı tablolardaki alanlar arasındaki ilişkileri vb. gösterir;
    • Tablolar - veritabanı verilerinin yerleştirildiği tablolar;
    • Görünümler - görünümler. Görünümler ve tablolar arasındaki fark, veritabanı tablolarının veri içermesi, veri görünümlerinin ise içermemesi ve içeriğin diğer tablolardan veya görünümlerden seçilmesidir;
    • Saklı yordamlar - saklı yordamlar. Bunlar, bir veritabanıyla çalışırken ek esneklik sağlayan ilgili SQL ifadeleri grubudur.

    5. Öğrenci tablosunun oluşturulması.

    Şu anda Education veritabanı tamamen boştur ve herhangi bir nesne (tablolar, saklı yordamlar, görünümler vb.) içermez.

    Bir tablo oluşturmak için içerik menüsünü aramanız (sağ tıklama) ve “ Yeni Tablo Ekle" (Şekil 6).

    Pirinç. 6. Yeni tablo ekleme komutu

    Veri menüsü komutlarını kullanarak bir veritabanı tablosu eklemek için başka bir seçenek daha vardır:

    Veri -> Yeni Ekle -> Tablo

    Pirinç. 7. Yeni bir tablo eklemek için alternatif seçenek

    Sonuç olarak, üç sütun içeren bir tablo eklemek için bir pencere açılacaktır (Şekil 8). "Sütun Adı" ilk sütununda, veritabanı tablosunun karşılık gelen alanının adını girmeniz gerekir. İkinci sütun olan "Veri Türü"nde bu alanın veri türünü girmeniz gerekir. Üçüncü sütun " Nulls'a İzin Ver ", alanda veri bulunmama olasılığını belirtir.

    Pirinç. 8. Yeni tablo oluşturma penceresi

    Tablo düzenleyiciyi kullanarak Öğrenci tablosunu Şekil 9'daki gibi oluşturmanız gerekir. Tablo adı kapatıldığında mutlaka belirtilmelidir.

    Tablo düzenleyicide, Sütun Özellikleri penceresinde alan özelliklerini ayarlayabilirsiniz. Bir dizgenin (nvchar) uzunluğunu karakter cinsinden ayarlamak için Sütun Özellikleri penceresinin bir Uzunluk özelliği vardır. Bu özellik için varsayılan değer 10'dur.

    Pirinç. 9. Öğrenci masası

    Bir sonraki adım, anahtar alanını ayarlamaktır. Bu, Num_book alanının bağlam menüsünden "Birincil Anahtarı Ayarla" komutunu çağırarak yapılır. Anahtar alanı kullanılarak tablolar arasındaki bağlantılar kurulacaktır. Bizim durumumuzda, anahtar alan kayıt defteri numarasıdır.

    Pirinç. 10. Anahtar alanı ayarlama

    Birincil anahtarı ayarladıktan sonra, tablo penceresi Şekil 11'de gösterildiği gibi görünecektir.

    Pirinç. 11. Son formasyon sonrası Tablo Öğrencisi

    Şimdi tabloyu kapatabilirsiniz. Tabloyu kaydetme penceresinde adını belirtmeniz gerekir - Öğrenci (Şek. 12).

    Pirinç. 12. Öğrenci tablosunun adının girilmesi

    6. Oturum tablosunu oluşturun.

    Öğrenci tablosunu oluşturma modelini takiben, Oturum tablosu oluşturulur.

    Şekil 13, Oturum tablosunun son oluşumdan sonraki görünümünü göstermektedir. Birincil Anahtar, Num_book alanında ayarlanır. Tablo adı Oturum tarafından verilir.

    Pirinç. 13. Oturum tablosu

    Gerçekleştirilen eylemlerden sonra, Sunucu Gezgini penceresinde Öğrenci ve Oturum olmak üzere iki tablo görüntülenecektir.

    Böylece veritabanına istenilen sayıda tablo eklenebilir.

    7. Tabloların yapısını düzenleme.

    Bir veritabanı tablosunun yapısını değiştirmeniz gereken zamanlar vardır.

    MS Visual Studio'da veritabanı tablolarında değişiklik yapmak için öncelikle “Değişikliklerin Kaydedilmesini Önle” seçeneğinin işaretini kaldırmanız gerekir. tablonun yeniden oluşturulmasını gerektiren” Şekil 14'te gösterildiği gibi. Aksi takdirde, MS Visual Studio daha önce oluşturulan tablodaki değişiklikleri engelleyecektir. Şekil 14'te gösterilen Seçenekler penceresi, Araçlar menüsünden aşağıdaki sırayla çağrılır:

    Araçlar -> Seçenekler -> Veritabanı Araçları -> Tablo ve Veritabanı Tasarımcıları

    Pirinç. 14. Seçenek “ Tablonun yeniden oluşturulmasını gerektiren değişikliklerin kaydedilmesini önleyin

    Özelleştirmeden sonra tablonun yapısını değiştirebilirsiniz. Bunun için bağlam menüsünden seçilen tablo için çağrılan (sağ fare tuşu) “Tablo Tanımını Aç” komutu (Şekil 15) kullanılır.

    Pirinç. 15. “Tablo Tanımını Aç” komutunun çağrılması

    Bu komut ayrıca Veri menüsünde bulunur:

    Veri -> Tablo Tanımını Aç

    Önce tablo seçilmelidir.

    8. Tablolar arasında bağlantılar kurmak.

    Problemin durumuna göre Num_book alanı ile tablolar birbirine bağlanır.

    Tablolar arasında bir ilişki oluşturmak için öncelikle şunlara ihtiyacınız vardır (Şekil 16):

    • Veritabanı Şeması nesnesini seçin;
    • bağlam menüsünden (veya Veri menüsünden) Yeni Diyagram Ekle komutunu seçin.

    Pirinç. 16. Yeni bir diyagram eklemek için komutun çağrılması

    Sonuç olarak, yeni bir grafik eklemek için Tablo Ekle penceresi açılacaktır (Şekil 17). Bu pencerede Oturum ve Öğrenci olmak üzere iki tabloyu arka arkaya seçip Ekle butonuna basmanız gerekmektedir.

    Pirinç. 17. Diyagrama tablo eklemek için pencere

    Pirinç. 18. Diyagrama ekledikten sonra Öğrenci ve Oturum Tabloları

    Tablolar arasında ilişki kurmaya başlamak için, Student tablosunun Num_book alanına tıklamanız ve ardından (fare düğmesini bırakmadan) Oturum tablosunun Num_book alanına sürüklemeniz gerekir.

    Sonuç olarak, sırayla iki pencere açılacaktır: Tablolar ve Sütunlar (Şek. 19) ve Yabancı Anahtar İlişkisi (Şek. 20), burada her şeyi olduğu gibi bırakmanız ve seçiminizi Tamam ile onaylamanız gerekir.

    Tablolar ve Sütunlar penceresinde ilişkinin adı (FK_Session_Student ) ve üst (Student) ve alt tabloların adları ayarlanır.

    Pirinç. 19. Tablolar ve Sütunlar penceresi

    Pirinç. 20. İlişki özellikleri penceresi

    Gerçekleştirilen işlemlerden sonra tablolar arasındaki ilişki kurulacaktır (Şekil 21).

    Pirinç. 21. Öğrenci ve Oturum tabloları arasındaki ilişki

    Bir grafiğin kaydedilmesi, bir tablonun kaydedilmesiyle tam olarak aynı şekilde yapılır. Diyagramın adı sizin takdirinize göre seçilmelidir (örneğin, Diyagram1).

    Diyagram adını ayarladıktan sonra, seçiminizi onaylamanız gereken Kaydet penceresi açılacaktır (Şekil 22).

    Pirinç. 22. Tablolardaki değişiklikleri kaydetme onayı

    9. Verilerin tablolara girilmesi.

    Microsoft Visual Studio sistemi, verileri doğrudan veritabanı tablolarına girmenize olanak tanır.

    Bizim durumumuzda, bir bağlantı kurulurken (Şekil 19), birincil (Birincil Anahtar Tablosu) tablosu Öğrenci seçildi. Bu nedenle, önce bu tablonun hücrelerine veri girmeniz gerekir. Oturum tablosuna ilk önce veri girmeye çalışırsanız, sistem ilgili mesajın çıktısıyla bu girişi engeller.

    Öğrenci tablosunda veri giriş modunu çağırmak için bağlam menüsünden (sağ tıklama) veya Veri menüsünden Tablo Verilerini Göster komutunu çağırmanız gerekir (Şekil 23).

    Pirinç. 23. Tablo Veri Komutunu Göster

    Giriş verilerini girmeniz gereken bir pencere açılacaktır (Şek. 24).

    Pirinç. 24. Öğrenci tablosuna veri girme

    Student tablosuna veri girdikten sonra Session tablosuna veri girmeniz gerekmektedir.

    Session tablosunun Num_book alanına veri girerken, Student tablosunun Num_book alanına girilen değerlerin aynısını girmelisiniz (çünkü bu alanlar birbiriyle ilişkilidir).

    Örneğin Öğrenci tablosunun Defter_Sayı alanına girilen değerler ise “101”, “102”, “103” (bkz. Şekil 24), ardından Oturum tablosunun Num_book alanına bu değerler girilmelidir. Başka bir değer girmeye çalışırsanız, sistem yaklaşık olarak aşağıdaki pencereyi görüntüleyecektir (Şek. 25).

    Pirinç. 25. Öğrenci ve Oturum tabloları ile ilgili veri girişi hata mesajı

    Girilen verileri içeren Oturum tablosu Şekil 26'da gösterilmektedir.