• 05-03-2013, 00:43:41
    #1
        string query = String.Format("SELECT Personnel.ID," +
                     "Person.Name,Personnel.TitleID,Personnel.Research,"+
                      "Person.Email,Personnel.OfficeRoomLocation,"+
                       "Personnel.OfficePhoneNo,Person.Photo,Personnel.PositionID FROM Personnel,Person where Personnel.PersonID=Person.ID AND Personnel.Type=1 ;");
                    SqlCommand sorgu = new SqlCommand();
                    sorgu.Connection = con;
                    sorgu.CommandText = query;
                    SqlDataReader data = sorgu.ExecuteReader();
    
                    
                    Hoca h1 = new Hoca();
               
                    h1.lecturer = new List<Lecturer>();
                    while (data.Read())
                    {
                        //RankPosition ve RankTittle Alımı
                        string rankquery = String.Format("Select Enumeration.Type From Enumeration,Personnel Where Enumeration.ID=" + data[2].ToString());
                        string rankolum = "";
                        SqlCommand ranksorgu = new SqlCommand();
                        ranksorgu.Connection = con;
                        ranksorgu.CommandText = rankquery;
                        SqlDataReader rankdata = ranksorgu.ExecuteReader();
                        while (rankdata.Read())
                        {
                            rankolum = rankdata[0].ToString();
    
                        }
                        rankdata.Close();
                   
                        Lecturer l1 = new Lecturer();
                        l1.id= data[0].ToString();
                        l1.Name = data[1].ToString();
                        l1.RankTitle = rankolum;
                        l1.Research = data[3].ToString();
                        l1.Email = data[4].ToString();
                        l1.Office = data[5].ToString();
                        l1.PhoneNumber = data[6].ToString();
                        l1.Photo = data[7].ToString();
                        l1.RankPosition = data[8].ToString();
                        h1.lecturer.Add(l1);
                        string str = js.Serialize(h1);
                        Label1.Text = str;
                    }
                    data.Close();
                   
                      
                        
              
                   
                }
                catch (Exception ex)
                {
    
                    Label1.Text = ex.Message.ToString();
                }
               
            }
    böyle bir kodum var ustekı sorgunun ıcındeyken dıger sorgudan gelen verıyı kullanmam gerekiyor
    Bu Command ile ilişkili, öncelikle kapatılması gereken açık bir DataReader zaten var.
    boyle bır hata alıyorum
  • 05-03-2013, 01:04:29
    #2
    kod mantığında hata var.. bir connection açıkken ve sen onun verilerini kullanıyor iken aynı zamanda aynı connection üzerinden başka bir akım yaratmaya çalışıp var olan açık kaynak üzerinden farklı komutlar çalıştırıyorsun kapatmadan..

    ben yerinde olsam şöyle bi yol izlerim..

    öncelikle ilk sorumdan dönen değerleri bir datatable a alırım.
    sonra bağlantımı kapatırım.
    sonra yeni bir bağlantı açarım
    bir döngü ile bu databale ın satırlarını gezerim ve sorgumu çalıştırırm.

    ikisini birbirinden ayırman mantıklı olur
  • 05-03-2013, 01:07:46
    #3
    Demek istediğiniz İlk sorguyu bir datatable atıp ondan sonra ıkıncı bir sorguyu calıstırıp gereklı duzenlemelerı yapıp classa oyle atmak doğru anlamısmıyım acaba ?
  • 05-03-2013, 01:30:48
    #4
    evet aynen o şekilde.. istersen de kod olarak data.read yerine, bir tane dataadapter kullanıp bir dataset e sorgu sonucunu doldurabilirsin
  • 05-03-2013, 01:36:48
    #5
    Hocam kodu değiştirdim dediğiniz mantıkta yaptım ama sorunum su dataadapterıda kapatmamı ıstıyor kapatıyorum con.close ile tekaradan sorgu yazıcagımda con.open diyorum

    Bağlantı kapatılmadı. Bağlantının geçerli durumu: açık.
    böyle bir hata alıyorum

        string query = String.Format("SELECT Personnel.ID," +
                   "Person.Name,Personnel.TitleID,Personnel.Research," +
                    "Person.Email,Personnel.OfficeRoomLocation," +
                     "Personnel.OfficePhoneNo,Person.Photo,Personnel.PositionID FROM Personnel,Person where Personnel.PersonID=Person.ID AND Personnel.Type=1 ;");
                    SqlDataAdapter da = new SqlDataAdapter(query, con);
                    da.SelectCommand.ExecuteNonQuery();
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    con.Close();
                    Hoca h1 = new Hoca();
    
                    h1.lecturer = new List<Lecturer>();
                    foreach (DataRow data in dt.Rows)
                    {
    
                       
                        con.Open();
                        Lecturer l1 = new Lecturer();
                        string rankquery = String.Format("Select Enumeration.Type From Enumeration,Personnel Where Enumeration.ID=" + data[2].ToString());
                        string rankolum = "";
                        SqlCommand ranksorgu = new SqlCommand();
                        ranksorgu.Connection = con;
                        ranksorgu.CommandText = rankquery;
                        SqlDataReader rankdata = ranksorgu.ExecuteReader();
                        while (rankdata.Read())
                        {
                            rankolum = rankdata[0].ToString();
                        }
                        l1.id = data[0].ToString();
                        l1.Name = data[1].ToString();
                        l1.RankTitle = rankolum;
                        l1.Research = data[3].ToString();
                        l1.Email = data[4].ToString();
                        l1.Office = data[5].ToString();
                        l1.PhoneNumber = data[6].ToString();
                        l1.Photo = data[7].ToString();
                        l1.RankPosition = data[8].ToString();
                        h1.lecturer.Add(l1);
                        string str = js.Serialize(h1);
                        Label1.Text = str;
                    }
  • 05-03-2013, 01:40:53
    #6
    özelden teamviewer id ve pass at bakayım
  • 05-03-2013, 03:14:00
    #7
    ertan2002 adlı üyeden alıntı: mesajı görüntüle
    özelden teamviewer id ve pass at bakayım
    atıyorum hemen

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 03:14:00 -->-> Daha önceki mesaj 01:41:10 --

    Select  Person.Name ,A.Type, Personnel.Research, Person.Email, Personnel.OfficeRoomLocation, Personnel.OfficePhoneNo,Person.Photo,B.Type
    from Person inner join Personnel on Person.ID=Personnel.PersonID inner join Enumeration A
    on A.ID =Personnel.PositionID inner join Enumeration B on B.ID =Personnel.TitleID
    Sorun cozuldu