Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    17

    messaggio di record non trovato con Access e C#.. Come?

    Ciao a tutti, sono alle mie prime esperienze con i database.. volevo sapere una cosa.. avrei bisogno nel visualizzare un messaggio di errore nel caso in cui il record nel database non fosse trovato.. questa è la funzione che si occupa di trovare nel database e di ritornare una stringa:

    codice:
    public string trova_in_database(string comando)
            {
               
                    // String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=C:\\db\\Comandi.mdb";
                    String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=Comandi.mdb";
                    OleDbConnection con = new OleDbConnection(connect);
                    con.Open();
                    OleDbCommand cmd1 = con.CreateCommand();
                    int id = Convert.ToInt16(comando);
                    cmd1.CommandText = "SELECT TOP 1 comando FROM Operazioni WHERE operazione = ?";
                    OleDbParameter p1 = new OleDbParameter();
                    cmd1.Parameters.Add(p1);
                    p1.Value = id;
                    OleDbDataReader reader = cmd1.ExecuteReader();
    
                    
                        reader.Read();
                        MessageBox.Show("sono qui");
                        string operazione = reader.GetString(0);
    
                        //FINE...
                        return operazione     
    
            }
    La questione è che se io tento di trovare un valore che nel database non esiste il programma mi va in crash.. precisamente al punto:


    codice:
    string operazione = reader.GetString(0);
    e mi dice appunto che system.invalidoperationexception non è stata gestita.. ho provato con IF NOT EXIST nella query ma non è quello che voglio perchè mi seleziona l'ultima disponibile.. io invece vorrei un messaggio di errore.. grazie mille a tutti!!

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: messaggio di record non trovato con Access e C#.. Come?

    Originariamente inviato da Nik_1990
    Ciao a tutti, sono alle mie prime esperienze con i database.. volevo sapere una cosa.. avrei bisogno nel visualizzare un messaggio di errore nel caso in cui il record nel database non fosse trovato.. questa è la funzione che si occupa di trovare nel database e di ritornare una stringa:

    codice:
    public string trova_in_database(string comando)
            {
               
                    // String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=C:\\db\\Comandi.mdb";
                    String connect = "Provider=Microsoft.JET.OLEDB.4.0;data source=Comandi.mdb";
                    OleDbConnection con = new OleDbConnection(connect);
                    con.Open();
                    OleDbCommand cmd1 = con.CreateCommand();
                    int id = Convert.ToInt16(comando);
                    cmd1.CommandText = "SELECT TOP 1 comando FROM Operazioni WHERE operazione = ?";
                    OleDbParameter p1 = new OleDbParameter();
                    cmd1.Parameters.Add(p1);
                    p1.Value = id;
                    OleDbDataReader reader = cmd1.ExecuteReader();
    
                    
                        reader.Read();
                        MessageBox.Show("sono qui");
                        string operazione = reader.GetString(0);
    
                        //FINE...
                        return operazione     
    
            }
    La questione è che se io tento di trovare un valore che nel database non esiste il programma mi va in crash.. precisamente al punto:


    codice:
    string operazione = reader.GetString(0);
    e mi dice appunto che system.invalidoperationexception non è stata gestita.. ho provato con IF NOT EXIST nella query ma non è quello che voglio perchè mi seleziona l'ultima disponibile.. io invece vorrei un messaggio di errore.. grazie mille a tutti!!
    Probabilmente il reader ha la proprietà GetString che non ha elementi e quindi va in errore. Devi controllare prima di assegnare il getString(0) che la lunghezza dell'array sia maggiore di zero.

  3. #3
    Ciao,

    è evidente che la sezione è errata, hai postato un kilo di codice C# ed hai chiesto la risoluzione di un problema relativo al codice C# e non relativo a codice SQL e/o a problemi inerenti alla piattaforma del database.

    Per questa volta sposto io, maggiore attenzione gentilmente.

    Grazie
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Ovviamente devi controllare PRIMA se il reader contiene righe...

    if reader.HasRows

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.