Bir kitabevi için web uygulaması geliştiriyorsunuz. Yaptığınız analize dayanarak, uygulamanın veritabanını aşağıdaki gibi tasarladınız;

Veritabanı modelinize göre, her kitabın sıfır veya daha fazla yazarı olabilir, her yazarın sıfır veya daha fazla kitabı olabilir.
Toplam Kitap Adedi ve Toplam Yazar Adedi sorularına cevap verebilmek için, aşağıdaki sorguyu yazdınız;
SELECT DISTINCT
COUNT(Yazarlar.YazarID) AS ToplamYazarAdedi,
COUNT(Kitaplar.KitapID) AS ToplamKitapAdedi
FROM
Yazarlar
FULL JOIN YazarKitaplari YK ON Yazarlar.YazarID = YK.YazarID
FULL JOIN Kitaplar ON YK.KitapID = Kitaplar.KitapID
Problem, rakamların beklediğinizden yüksek çıkması.
Sizce problem nedir ve nasıl düzeltebiliriz?
Bu sefer bir web uygulaması projesinde görevliyiz. Uygulamanın yönetim panelini YonetimPaneli dizini içerisinde geliştirdik.
Güvenlik açısından önlem almak için web.config dosyasına şu satırları ekledik;
Fakat, Proje Lideri bu kodu gördükten sonra yüzü asıldı.
Sizce problem nedir ve nasıl düzeltebiliriz?
Bowling skorlarını hesaplayan bir uygulama yazıyoruz.
2 oyuncunun 3 oyunda aldığı skorları hesaplayan aşağıdaki kodu yazdık ve çalıştırdık.
Fakat rakamlarda bir terslik var sanki. Sizce problem nedir ve nasıl düzeltebiliriz?
using System;
class Program
{
static void Main(string[] args)
{
int[,] PuanTablosu = { {101, 128, 143}, {123, 115, 116} };
int OyuncuPuan = 0;
for (int iLoop = 0; iLoop < = PuanTablosu.GetUpperBound(0); iLoop++)
{
for (int yLoop = 0; yLoop <= PuanTablosu.GetUpperBound(1); yLoop++)
{
OyuncuPuan += PuanTablosu[iLoop, yLoop];
}
Console.WriteLine("Oyuncu {0} skor: {1}", iLoop + 1, OyuncuPuan);
}
Console.ReadLine();
}
}
Aşağıdaki kodu çalıştırdığımızda Console’a “Bir”, “İki”, “Üç” yazdığını görüyoruz.
Sizce neden “Dört” elemanı yazılmıyor?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BuKoddaNeYanlisVar
{
class Program
{
private List<string> _items = new List<string>();
public List<string> Items
{
get { return _items.ToList(); }
set { _items = value; }
}
static void Main(string[] args)
{
Program program = new Program();
program.Items = new List<string> { "Bir", "İki", "Üç" };
program.Items.Add("Dört");
foreach (var item in program.Items)
Console.WriteLine(item);
Console.ReadLine();
}
}
}
Aşağıdaki kod parçasını çalıştıralım. Sifir isimli değişkenin değerine baktığımızda 0 olduğunu görüyoruz.
List arrListe = new List(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
int Sifir = arrListe.Find(
delegate(int i) {
return i == 0;
}
);
Listede 0 değeri yok!. Neden sonuç 0 dönüyor? Bu kodu nasıl düzeltebiliriz?
Database’de şu scripti çalıştıralım;
CREATE TABLE T_PERSONEL
(
ADSOYAD VARCHAR(50),
DOGUM_TARIHI SMALLDATETIME
)
INSERT INTO T_PERSONEL VALUES ('Engin POLAT', '1981-01-12')
INSERT INTO T_PERSONEL VALUES ('Emre ERKAN', '1979-03-14')
INSERT INTO T_PERSONEL VALUES ('Ozan ÇAĞLARGİL', '1982-09-27')
INSERT INTO T_PERSONEL VALUES ('Fatih DURGUT', '1978-06-23')
INSERT INTO T_PERSONEL VALUES ('Burhan İNEGÖL', '1980-11-08')
Aşağıdaki stored procedure’i yazalım.
CREATE PROCEDURE PR_PERSONEL_LISTE
(
@SIRALAMA INT
)
AS
BEGIN
SELECT ADSOYAD, DOGUM_TARIHI FROM T_PERSONEL
ORDER BY
CASE @SIRALAMA
WHEN 1 THEN DOGUM_TARIHI
WHEN 2 THEN ADSOYAD
END
END
Bu procedure’ü 1 parametresi vererek çalıştırıyoruz, ve beklediğimiz sonucu alamıyoruz.
Nerede hata yaptık? (İpucu; parametre olarak 2 vermeyi deneyin)
Yorumlarınızı bekliyorum…