Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    110

    [c#] WPF PROBLEMA CON QUERY DATABASE

    Ciao a tutti,
    nella mia wpf ho diversi textbox dove l'utente inserisce dei numeri.
    in base al numero inserito con una connessione ad una tabella di database ottengo in altri textbox la risposta voluta (letta dal database).

    codice:
    SqlCommand comando = conn.CreateCommand();
    comando.CommandText = "select [1dr] from SondeFuel where [sonda] =" + Sonda1dr.Text;
    conn.Open();
    SqlDataReader reader = comando.ExecuteReader();
    while (reader.Read())
    { Mc1dr.Text = reader[0].ToString(); }
    conn.Close();

    fin qua tutto bene - il mio problema è il seguente:

    in un altra finestra ho creato un altra query , e vorrei leggere nel texbox "vTis.text"
    la risposta

    codice:
    public double Tis()
    {
    Condizioni con = new Condizioni(); //Condizioni è la finestra dove ho "vTis"
    SqlCommand comando = conn.CreateCommand();
    comando.CommandText = "select [TIS] from Carene where [DISL] = 1455.3";
    conn.Open();
    SqlDataReader reader = comando.ExecuteReader();


    Condizioni con = new Condizioni();
    con.vTis.Text = reader[0].ToString();
    return double.Parse(con.vTis.Text);


    conn.Close();
    }

    intanto mi dice che la conn.Close() è codice non eseguibile
    e poi in debug mi blocca e mi dà la seguente eccezione:
    "Eccezione non gestita di tipo 'System.InvalidOperationException' in System.Data.dll


    Ulteriori informazioni: La connessione non è stata chiusa. Lo stato attuale della connessione è aperto."

    percheè????????

    se provo a non aprirla mi dice che la connessione è ancora chiusa!!!!

    qualcuno può aiutarmi a capire dove sbaglio?

    grazie e complimenti a tutti

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se usi la

    return ...

    prima della

    conn.Close();

    è ovvio che la Close non possa mai essere eseguita.

    Inoltre, per il reader non leggi con la

    reader.Read()

    prima di utilizzare i dati.

    P.S. E poi perché due volte la Condizioni con = new Condizioni(); ?

    P.P.S. Quando posti del codice usa i tag CODE
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    110
    ciao grazie della risp,

    sì mi ero accorto adesso della posizione sbagliata di conn.close() e l ho messo prima.

    l'oggetto condizioni è stato un errore di copia incolla, viene istanziato solo una volta.

    codice:
    SqlCommand comando = conn.CreateCommand();            comando.CommandText = "select [TIS] from Carene where [DISL] = 1455.3";
                conn.Open();
                SqlDataReader reader = comando.ExecuteReader();
    
    
                Condizioni con = new Condizioni();
                reader.Read();
                con.vTis.Text = reader[0].ToString();
    
    
                conn.Close();
                return double.Parse(con.vTis.Text);
    reader.read() intendevi così?

    ho provato codice sopra ma mi dice sempre che la connessione è aperta.
    non vorrei che fosse la connessione che uso in precedenza negli altri texbox...

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Bisognerebbe vedere *tutto* il codice per capire dove lascia aperta la connessione.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    110
    una domanda:

    le mie connessioni sono tutte nei
    codice:
    private void Textbox_TextChanged(object sender, TextChangedEventArgs e)
    anche facendo partire il debug e aprendo subito la finestra Condizioni( senza inserire alcun valore negli altri textbox dove ho le altre connessioni) , mi dà sempre che la conn è aperta.

    è normale?

    un esempio di uno dei textbox dove ho le altre connessioni è il seguente:
    codice:
    private void Sonda1dr_TextChanged(object sender, TextChangedEventArgs e)        {
                try
                {
                    SqlCommand comando = conn.CreateCommand();
                    comando.CommandText = "select [1dr] from SondeFuel where [sonda] =" + Sonda1dr.Text;
                    conn.Open();
                    SqlDataReader reader = comando.ExecuteReader();
                    while (reader.Read())
                    { Mc1dr.Text = reader[0].ToString(); }
                    conn.Close();
                }
                catch { Sonda1dr.Text = ""; conn.Close(); Mc1dr.Text = ""; }
            }

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Aprire e chiudere continuamente la connessione nel TextChanged non è una grande scelta ...

    Sarebbe meglio aprire la connessione una volta (magari nella Load) e chiuderla quando termina il programma ...

    In ogni caso, se non copi-incolli tutto il codice, come ti dicevo, non si può vedere se fai degli errori ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2014
    Messaggi
    110
    ok ,
    questo è il mio primo programma un po più complesso.
    proverò a modificarlo seguendo il tuo consiglio , magari riesco ad ovviare al problema.

    grazie come sempre per le tue risposte-insegnamenti!

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.