/ / Indeks był poza granicami tablicy - asp.net, sql-server, subsonic3

Indeks znajdował się poza granicami tablicy - asp.net, sql-server, subsonic3

Otrzymuję ten indeks poza związanym błędem, gdy iPróbuję dodać produkt z więcej niż 1 ilością do tabeli zamówień. Aby być bardziej zrozumiałym, nie jest to ten sam przypadek, gdy dodaję produkt z ilością 1 lub wiele produktów, każdy z ilością 1. Kod do wstawiania znajduje się poniżej, a błąd jest wyświetlany w wierszu polecenia sql.

    SqlCommand command = new SqlCommand("Select Product_id,Product_name,Product_cost,Quantity from Cart where User_id="" + userid + """,con);
try
{
con.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
int a = Convert.ToInt32(reader[0]);
ar.Add(a);
String pdname = reader[1].ToString();
ar1.Add(pdname);
Int32 pcost = Convert.ToInt32(reader[2]);
ar2.Add(pcost);
int q = Convert.ToInt32(reader[3]);
ar3.Add(q);
}
pkid = (int[]) ar.ToArray(typeof(int));
pkname = (String[]) ar1.ToArray(typeof(String));
pkcost = (Int32[]) ar2.ToArray(typeof(int));
pkq = (int[]) ar3.ToArray(typeof(int));
con.Close();

}
catch (Exception ex)
{
Response.Write("Error at second" + ex);
}
con.Open();

for (int i = total-1; i>=0; i--)
{

error here=:-         SqlCommand smd = new SqlCommand("Insert into Orders values(""+orderid+"",""
+ userid + "","" + name + "","" + pkid[i] + "","" + pkname[i] + "",""
+ address + "","" + pkq[i] + "","" + pkcost[i] + "","" + date + "",""
+ payment.SelectedItem.ToString() + "","Pending")", con);

smd.ExecuteNonQuery();

}

con.Close();

Odpowiedzi:

0 dla odpowiedzi № 1

Najpierw ustaw punkt przerwania na pkid = (int[]) ar.ToArray(typeof(int)); pkname = (String[]) ar1.ToArray(typeof(String)); pkcost = (Int32[]) ar2.ToArray(typeof(int)); pkq = (int[]) ar3.ToArray(typeof(int)); te linie i zobacz wartości w oknie zegarka. może być błąd, musi znajdować się w jednym z tych wierszy.


0 dla odpowiedzi nr 2

Więc po ponownym spojrzeniu na mój kod otrzymałem plikproblem i to tylko prosty. W rzeczywistości suma użyta w pętli for jest sumą całkowitej ilości. W tym przypadku, jak powiedziałem, przesyłam 1 produkt z ilością = 2. Więc pętla For próbuje zostać wykonana 2 razy, ale łączna liczba rekordów wynosi 1, powoduje to problem. Właśnie zmieniłem tę sumę na Sumę wszystkich rekordów i teraz działa dobrze. Dziękuję wszystkim za pomoc.