none
foreach la sıralı veri gönderme RRS feed

  • Soru

  • merhaba belki çok basit bir işlem ancak dünden beri başım durdu 

    n tane guid geliyor bunları 100 li şekilde db ye gönderip ordan bu id lerin verilerini çekmek

    ancak iç içe for yapsamda gelen id sayısı 100 den düşük olduğunda for patlıyor 

      for (int i = 0; i < bbIds.Count(); i++)
                {
                    for (int j = 0; j < 100; j++)
                    { 
                      guids.Append(bbIds[j]).Append(",");
                                 
                    } 
                        guids.Remove(guids.Length - 1, 1);
                        Object[] prms = new Object[] { guids.ToString(), gecerli }; // aktifleri getir
                        EGCommand cmd = new EGCommand("BagimsizBolumEkspertizIcerikGetir_BBID", prms);
                        object result = cmd.Execute();
                        if (result != null)
                        {
                            dtEksIcerik = (dsTEM_EkspertizIcerik.T_TEM_EKSPERTIZ_ICERIKDataTable)result;
                            Session.Add("ICERIK", (System.Data.DataTable)dtEksIcerik);
                        }
                    }               
            }


    • Düzenleyen Passengers 11 Ekim 2013 Cuma 13:00 asdas
    11 Ekim 2013 Cuma 12:59

Yanıtlar

  • SQL server olsaydi sorun olmazdi, ben daha fazlasini gonderiyorum - Oracleda olmamasi garip :)

    Dogru anladiysam N tane Guid'i 100'luk gruplar halinde gondermek istiyorsun:

    int sayi = 100;
    int bolum = (int)Math.Ceiling( bbIds.Count () / (double)sayi );
      
    for (int i = 0; i < bolum; i++)
    {
      string guidsList = string.Join(",",bbIds.Skip( i * sayi ).Take(sayi) );
    
      Object[] prms = new Object[] { guidsList, gecerli }; // aktifleri getir
      EGCommand cmd = new EGCommand("BagimsizBolumEkspertizIcerikGetir_BBID", prms);
      object result = cmd.Execute();
      if (result != null)
      {
          dtEksIcerik = (dsTEM_EkspertizIcerik.T_TEM_EKSPERTIZ_ICERIKDataTable)result;
          Session.Add("ICERIK", (System.Data.DataTable)dtEksIcerik);
      }
    }



    11 Ekim 2013 Cuma 23:25

Tüm Yanıtlar

  • Tam olarak ne yapmak istedigini anlayamadim. Verdigin kodda sanki 2 tane gereksiz dongu var (gereksizden ote neden tekrar tekrar ayni kodu calistirdigini anlayamiyorum). 100'un oradaki anlamini hic anlamadim. Yapmak istedigin soyle bir sey mi acaba:

       string guidsList = string.Join(",",bbIds);
    //for (int i = 0; i < bbIds.Count(); i++)
    //{
      Object[] prms = new Object[] { guidsList, gecerli }; // aktifleri getir
      EGCommand cmd = new EGCommand("BagimsizBolumEkspertizIcerikGetir_BBID", prms);
      object result = cmd.Execute();
      if (result != null)
      {
          dtEksIcerik = (dsTEM_EkspertizIcerik.T_TEM_EKSPERTIZ_ICERIKDataTable)result;
          Session.Add("ICERIK", (System.Data.DataTable)dtEksIcerik);
      }
    //}               
    //

    11 Ekim 2013 Cuma 15:43
  • çetin bey sizin bu söylediğiniz evet olur bende denemiştim ancak burda her döngüde her id için db ye gidip veri çekiyor

    işte ben bunun aynısı tek kayıt değil 100 li id göndermek istiyorum,

    iki tane for olmasının nedeni üsteki gelen 1000 tane id varsa alttaki for 100 tane göndermesi için

    sizin bu söylediğinizde count sayısı kadar dönüyor ,benim istediğim ise count sayısı kadar dönsün ama bunu 100 id göndersin çeksin ,sonra tekrar ikinci sıradaki 100 göndersin çeksin  

    işte ama orda bir sorun var ben 100 göndermek istiyorum ama id eğer 150 ise ne olacak ? 100 veya altı gitmesi lazım 

    sizinki gibi yapmama nedenim trafik çok oluyor,hepsi neden gönderip çekmiyorsun derseniz hepsini gönderdiğim de oracle veri tabanı kullanıyorum ve sebebini anlayamadıım bir şekilde oracle daki sp ye giden veri patlıyor 100 tane id sonra anlaşılmayan bir dönüşüm bulundu diye hata veriyor o yüzden gridviewden 1000 tane kayıt okuduysam bunları db ye 100 li olarak gönderip verilerini çekmem lazım


    • Düzenleyen Passengers 11 Ekim 2013 Cuma 16:44 asdsa
    11 Ekim 2013 Cuma 16:36
  • SQL server olsaydi sorun olmazdi, ben daha fazlasini gonderiyorum - Oracleda olmamasi garip :)

    Dogru anladiysam N tane Guid'i 100'luk gruplar halinde gondermek istiyorsun:

    int sayi = 100;
    int bolum = (int)Math.Ceiling( bbIds.Count () / (double)sayi );
      
    for (int i = 0; i < bolum; i++)
    {
      string guidsList = string.Join(",",bbIds.Skip( i * sayi ).Take(sayi) );
    
      Object[] prms = new Object[] { guidsList, gecerli }; // aktifleri getir
      EGCommand cmd = new EGCommand("BagimsizBolumEkspertizIcerikGetir_BBID", prms);
      object result = cmd.Execute();
      if (result != null)
      {
          dtEksIcerik = (dsTEM_EkspertizIcerik.T_TEM_EKSPERTIZ_ICERIKDataTable)result;
          Session.Add("ICERIK", (System.Data.DataTable)dtEksIcerik);
      }
    }



    11 Ekim 2013 Cuma 23:25
  • keşke sql olsa oracle nasıl dünyanın en iyi veri tabanı bilmiyorum ama kullanımı berbat ötesi işyeri kullanıyor bende bilmiyorum saçma sapan hatalar veriyor

    söylediğinizi deniycem çetin hocam çok teşekkür ederim

    13 Ekim 2013 Pazar 04:11