Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080

    Index 0 is either negative or above rows count.

    che vuol dire???

    Index 0 is either negative or above rows count.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.IndexOutOfRangeException: Index 0 is either negative or above rows count.

    ---

    codice:
                    string sql = "SELECT * FROM tbl WHERE id= " + Request.QueryString["id"];
    
    string fotpic = Access.visRecord4(sql).DefaultView[0]["fotopiccola"].ToString();
    Classe Access
    codice:
    		public static DataTable visRecord4 (string SQL)
    		{
                SqlConnection conn = new SqlConnection(connString);
                SqlDataAdapter da = new SqlDataAdapter(SQL, connString);
                DataTable myTable = new DataTable();
                da.Fill(myTable);
                return myTable;
    
    		}
    L'errore me lo da qui (string fotpic = Access.visRecord4(sql).DefaultView[0]["fotopiccola"].ToString()
    Il valore id riusltato so con certezza che sarebbe una stringa tipo pippo.jpg pluto.jpg ecc...

  2. #2

    Re: Index 0 is either negative or above rows count.

    Originariamente inviato da Sonikag
    che vuol dire???
    Index 0 is either negative or above rows count.
    quello che c'e' scritto nell'errore e cioe' che stai cercando di leggere un array (es. dataview) il cui indice e' inferiore a 0 cioe' e' vuoto.
    codice:
    string sql = "SELECT * FROM tbl WHERE id= " + Request.QueryString["id"];
    Va bene fare delle funzioni che ci aiutano a scrivere meno codice ma sarebbe meglio che queste funzioni non ci costringano a scrivere "brutto" codice altrimenti meglio evitarle.
    Incollare stringhe di testo nella query sql equivale ad un suicidio dal punto di vista della sicurezza e un sacco di problemi inutili dal punto di vista del tipo di dati passati (finche e' un integer o una stringa tanto tanto ma se inizi ad unsare date o decimal ecc. addio).
    Se hai bisogno di una libreria che ti permetta di eseguire velocemente codice sql, utilizza quella scritta direttamente da microsoft che si chiama Microsoft Data Access Application Block e che trovi qui http://tinyurl.com/dvlpy
    Altrimenti fai un overload della tua funzione che accetta una variabile (es. int _id ) e al cui interno usi per valorizzare un parametro.
    Per finire sul tuo errore, prima di usare una dataview per leggere il contenuto di una datatable riempici una nuova variabile ed accedi a questa variabile solo se non e' nothing e se la proprieta' count e' superiore a 0
    p.s. perche' usi defaultview? scrivi direttamente
    codice:
    DataTable dt = Access.visRecord4(sql);
    String campo = dt.Rows[0]["nomecampo"].ToString();
    codice:
    ...
                SqlConnection conn = new SqlConnection(connString);
    ...
    questa riga mi sembra inutile
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di Sonikag
    Registrato dal
    Mar 2004
    Messaggi
    2,080
    Grazie

    Ho capito ora anche il motivo del vuoto... prima facevo la delete del record e poi cercavo di effettuarci operazioni :P

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.