/ / L'indice era al di fuori dei limiti dell'array: asp.net, sql-server, subsonic3

L'indice non rientrava nei limiti dell'array: asp.net, sql-server, subsonic3

Ricevo questo errore di indice fuori limite quando isto cercando di aggiungere un prodotto con più di 1 quantità nella tabella degli ordini. Per essere più chiari, questo non è lo stesso caso quando aggiungo un prodotto con quantità 1 o più prodotti ciascuno con quantità uno. Il codice per l'inserimento è di seguito e l'errore viene visualizzato nella riga sqlcommand.

    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();

risposte:

0 per risposta № 1

Per prima cosa imposta un punto di interruzione su pkid = (int[]) ar.ToArray(typeof(int)); pkname = (String[]) ar1.ToArray(typeof(String)); pkcost = (Int32[]) ar2.ToArray(typeof(int)); pkq = (int[]) ar3.ToArray(typeof(int)); queste linee e vedere i valori nella finestra di controllo. può essere l'errore deve essere in una di queste righe.


0 per risposta № 2

Quindi, dopo aver dato un'occhiata di nuovo al mio codice, ho ottenuto il fileproblema ed è solo semplice. In realtà il totale utilizzato nel ciclo for è la somma della quantità totale. In questo caso, come ho detto, sto inviando 1 prodotto con quantità = 2. Quindi il ciclo For sta cercando di essere eseguito 2 volte ma i record totali sono 1 questo sta causando il problema. Ho appena cambiato il totale in Somma dei record totali e ora funziona bene. Grazie a tutti per l'aiuto.