2016-07-18 10 views
0

vs diesen Fehler in dieser Zeile geben "lbl10_drink.Text = Leser [1] .ToString();" meine Verbindungen funktionieren korrekt und die Werte beachten korrekt für Verbindungszeichenfolge und die Leser [0] ...... auch meine Querys funktionieren korrekt. was ist das Problem?Index war außerhalb der Grenzen des Arrays in asp.net

{ 

    using (SqlConnection connection1 = DBConnection.getConnection()) 
    { 
     string strquery1 = " with distinctvalueyes (typearticle) as (select top 1 'Fruit' FROM WeedingSalonGeneralRes where Fruit=1 union all select top 1 'Drink' FROM WeedingSalonGeneralRes where Drink=1 union all select top 1 'Desert' FROM WeedingSalonGeneralRes where Desert=1 union all select top 1 'MainFood' FROM WeedingSalonGeneralRes where MainFood=1 union all select top 1 'Salad' FROM WeedingSalonGeneralRes where Salad=1 union all select top 1 'TableFlower' FROM WeedingSalonGeneralRes where TableFlower=1 union all select top 1 'SaloonLighting' FROM WeedingSalonGeneralRes where SaloonLighting=1 union all select top 1 'Saloondesign' FROM WeedingSalonGeneralRes where Saloondesign=1 union all select top 1 'SloonCrew' FROM WeedingSalonGeneralRes where SloonCrew=1 union all select top 1 'Pastry' FROM WeedingSalonGeneralRes where Pastry=1 union all select top 1 'GiftCard' FROM WeedingSalonGeneralRes where GiftCard=1) select * from distinctvalueyes "; 
     connection1.Open(); 
     SqlCommand cmd1 = new SqlCommand(); 
     cmd1.Connection = connection1; 
     cmd1.CommandText = strquery1; 
     string cis = Session["customerID"].ToString(); 
     lbl2_customerid.Text = cis; 

     SqlDataReader reader = cmd1.ExecuteReader(); 
     if (reader.Read()) 
     { 
      lbl8_fruit.Text = reader[0].ToString(); 
      lbl10_drink.Text = reader[1].ToString(); 
      lbl11_desert.Text = reader[2].ToString(); 
      lbl12_mainfood.Text = reader[3].ToString(); 
      lbl13_salad.Text = reader[4].ToString(); 
      lbl14_tableflower.Text = reader[5].ToString(); 
      lbl15_saloonlighting.Text = reader[6].ToString(); 
      lbl16_saloondesign.Text = reader[7].ToString(); 
      lbl17_salooncrew.Text = reader[8].ToString(); 
      lbl18_pastry.Text = reader[9].ToString(); 
      lbl19_giftcard.Text = reader[10].ToString(); 


      using (SqlConnection connection2 = DBConnection.getConnection()) 
      { 
       //query for fetch service prices 
       string strquery2 = "SELECT Fruit_price,Drink_price,Desert_price,MainFood_price,Salad_price,TableFlower_price,SaloonLighting_price,SaloonDesign_price,SaloonCrew_price,Pastry_price,GiftCard_price FROM GenReservationServicePrice"; 
       connection2.Open(); 
       SqlCommand cmd2 = new SqlCommand(); 
       cmd2.Connection = connection2; 
       cmd2.CommandText = strquery2; 
       SqlDataReader reader2 = cmd2.ExecuteReader(); 
       if (reader2.Read()) 
       { 
        string Fruit_price; 
        string Drink_price; 
        string Desert_price; 
        string MainFood_price; 
        string Salad_price; 
        string TableFlower_price; 
        string SaloonLighting_price; 
        string SaloonDesign_price; 
        string SaloonCrew_price; 
        string Pastry_price; 
        string GiftCard_price; 


        Fruit_price = reader[0].ToString(); 
        Drink_price = reader[1].ToString(); 
        Desert_price = reader[2].ToString(); 
        MainFood_price = reader[3].ToString(); 
        Salad_price = reader[4].ToString(); 
        TableFlower_price = reader[5].ToString(); 
        SaloonLighting_price = reader[6].ToString(); 
        SaloonDesign_price = reader[7].ToString(); 
        SaloonCrew_price = reader[8].ToString(); 
        Pastry_price = reader[9].ToString(); 
        GiftCard_price = reader[10].ToString(); 


        lbl8_fruit.Text = Fruit_price; 

       } 
      } 
     } 
    } 
} 

Antwort

0

In Ihrem ersten Abfrage sind Sie Rückkehr nur eine Spalte, so dass, wenn es um den Index [1] erreicht, die es zweite Säule ist aus gebundenem des Arrays

Sie haben nur eine Spalte, weil Sie eine UNION ALL verwenden, das nur die Daten auf der jeweils anderen

Stapeln Wenn Sie Ihre C# -Code ändern nicht wollen könnten Sie Ihre Abfrage, wie die

SELECT 
    (select top 1 'Fruit' FROM WeedingSalonGeneralRes where Fruit=1) as fruit, 
    (select top 1 'Desert' FROM WeedingSalonGeneralRes where Desert=1) as desert, 

schreiben Es ist hässlich, aber es würde funktionieren. Natürlich wiederholen Sie das für alle Ihre Optionen MainFood, Salat etc ...

+0

Also, in der ersten Abfrage möchte ich nur wahre Werte von SQL Server holen, vielleicht mehr als ein Wert ist wahr, was soll ich tun? – meysam

+0

Entschuldigung aber Ihre Abfrage war nicht arbeiten, ich testen, dass in Management Studio und es hat mehr Fehler – meysam

+0

Sory, aber können Sie richtige Abfrage für mich schreiben? – meysam

Verwandte Themen