Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Aggiornamento db.

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    5

    Aggiornamento db.

    ciao a tutti,

    ho davvero un problema da sbatterci la testa
    ho sviluppato un progetto java web molto grosso. che interagisce con il db con , insert update , select.
    quando tutto ad un tratto mi accorgo che il mio programma fa insert update e tutto ma finche non riavvio il web server (apache) se faccio una select per controllare gli aggiornamenti non funziona! o meglio mi fa rivedere i dati prima dell'insert. però se rifaccio il select dopo il restart appaiono tutti i dati come incanto.

    ho controllato di chiudere bene le connessioni, i record set blabla

    il db è mysql.
    per fare le query uso preparedStatement

    penso che il problema sia legato a qualche cosa di ottimizzo prestazioni che non rifà la query da 0 ma continua ad usare i dati che aveva ricevuto in precedenza.(supposizione completamente priva di fondamento)

    grazie dell'attenzione e plx HELP ME
    posted by Tribe

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Senza vedere nemmeno un briciolo di codice o senza sapere se tu effettui delle ottimizzazioni o se utilizzi librerie particolari... beh, direi che è impossibile darti risposte.

    Se io eseguo una query di aggiornamento su un DB e, successivamente, effettuo una SELECT mi aspetto che quest'ultima mi fornisca i dati aggiornati. E così è.

    Se da te non è così, sicuramente c'è qualche errore da qualche parte... dove? Lo puoi sapere solo tu...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    5
    non ho postato prima del codice xkè non è una classe lineare ma un pò + complicato. provo a spiegarlo :



    Una classe "manager" che crea una connessione istanziando una classe apposita.

    chiama una funzione della classe DAO (data access object) passandoli la connessione.

    la classe dao fa la query... poi si torna alla classe manager chiamante che fa commit o rollback e chiude la connessione.

    uso le normali librerie java.sql

    questa è la mia funzione x la connessione

    public Connection getConnection(){
    try{
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost/" +
    nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
    }catch(Exception ex){
    ex.printStackTrace();
    }
    return conn;
    }


    e questa una normale select

    public ArrayList searchByClientId(ClientInfo ci, Connection conn) {
    try {
    ArrayList list = new ArrayList();
    String sql_search_codCliente = "SELECT Segnalazioni.* FROM Segnalazioni "
    + " WHERE (Segnalazioni.codCliente = ?);";
    PreparedStatement ps = conn.prepareStatement(sql_search_codCliente);
    ps.setInt(1, ci.getIdCliente());
    ResultSet rs = ps.executeQuery(sql_search_codCliente);
    TicketInfo temp;
    while (rs.next()) {
    temp = new TicketInfo();
    temp.setCampo(rs.getString("campo"));
    temp.setOggetto(rs.getString("oggetto"));
    temp.setDataRegistrazione(rs.getDate("dataRegistra zione").toString());
    temp.setNote(rs.getString("note"));
    temp.setIdSegnalazione(rs.getInt("idSegnalazione") );
    temp.setPriorita(rs.getString("priorita"));
    temp.setStato(rs.getString("stato"));
    temp.setResponsabile(rs.getString("responsabile")) ;
    temp.setUtente(rs.getString("utente"));

    list.add(temp);
    }
    rs.close();
    ps.close();
    return list;
    } catch (Exception ex) {
    ex.printStackTrace();
    return null;
    }
    }
    posted by Tribe

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quando posti del codice, usa sempre gli appositi tag

    [code]
    codice
    [/code]

    altrimenti risulta tutta un'accozzaglia.

    Non vedo nulla di strano nel codice che hai postato... solo che è quello che effettua la query di selezione... sei sicuro che il problema non stia

    1) Nel codice della query di aggiornamento
    2) Nel codice che passa i dati da aggiornare

    ?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    5
    inanzitutto grazie dell'impegno/pazienza e scusa se nn ho usato i tag code ,


    cmq penso di aver capito qualcosa di +. il problema dovrebbe essere dato da ajax perchè ora che ho spostato tutto su netBeans e ho potuto fare un debug decente ho notato che la seconda query di select nemmeno arriva alla servlet. provo a postare il code ajax che uso x chiamare la servlet.


    codice:
    function caricaMenu(elemento) {
      // variabili di funzione
      var
        // assegnazione oggetto XMLHttpRequest
        ajax = assegnaXMLHttpRequest(),
        // assegnazione elemento del documento
        elemento = prendiElementoDaId(elemento),
        
    	url = "ClientServlet?op=getClient&nomeCliente=";
    	url += document.getElementById("nomeCliente").value
    
    	// risultato booleano di funzione
    	usaLink = true;
      // se l'oggetto XMLHttpRequest non � nullo
      if(ajax) {
        // il link al file non deve essere usato
        usaLink = false;
        // impostazione richiesta asincrona in GET
        // del file specificato
        ajax.open("get", url , true);
        // rimozione dell'header "connection" come "keep alive"
        ajax.setRequestHeader("connection", "close");
    	
        // impostazione controllo e stato della richiesta
        ajax.onreadystatechange = function() {
          // verifica dello stato
          if(ajax.readyState === readyState.COMPLETATO) {
            // verifica della risposta da parte del server
            if(statusText[ajax.status] === "OK"){
              // operazione avvenuta con successoa
    		  elemento.innerHTML = ajax.responseText;
    		  alert(ajax.responseText);
    		  }
            else {
              // errore di caricamento
              elemento.innerHTML = "Impossibile effettuare l'operazione richiesta.
    ";
              elemento.innerHTML += "Errore riscontrato: " + statusText[ajax.status];
            }
          }
        }
        // invio richiesta
        ajax.send(null);
      } 
      
    };
    e grazie ancora
    posted by Tribe

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    5
    dimenticavo : sono sicuro che la query di aggiornamento funziona correttamente xkè se faccio la select con altri mezzi vedo la riga nuova!

    aggiornamento :
    ne ho la certezza. è Ajax... se li faccio rifare una request = non la fa ...... x che motivo ? XD
    posted by Tribe

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    5
    chiudete pure ho risolto cambiando il metodo di passaggio valori di ajax in POST da GET. per qualche arcano motivo che vorrei chiarire se l'url passato da get era uguale evitava di richiamare la servlet e mi dava la stessa response.... mah
    posted by Tribe

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Probabilmente è un problema di caching.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.