Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Query su db access

    Ciao a tutti...
    come mai questa servlet

    private void searchInDB(String data, PrintWriter out){

    try{

    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    String filename = "C:\\Programmi\\JONAS_4_8_4\\webapps\\autoload\\ca llc\\registrochiamate.mdb";
    String database = "jdbcdbcriver={Microsoft Access Driver (*.mdb)};DBQ=";
    database+= filename.trim() + ";DriverID=22;READONLY=true}"; // add on to the end
    // now we can get the connection from the DriverManager
    Connection con = DriverManager.getConnection( database ,"","");
    Statement s = con.createStatement();
    String query = "select * from Chiamate"; //where quando = '"+data+"'";
    System.out.println(query);
    s.execute(query);
    ResultSet rs = s.getResultSet();



    out.println("<html><head><title></title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta name=\"generator\" content" +
    "=\"CSE HTML Validator Professional (http://www.htmlvalidator.com/)\"></head><body><table style=\"width: 100%; height: 11px\"><tr><img " +
    "src=\"http://intranet:9000/test/images/logo_idealista_it.gif\" /><td colspan=\"3\" style=\"height: 20px; text-align: left\"></td></tr>" +
    "<tr><td colspan=\"3\" style=\"text-align: left\" bgcolor=\"#99ff00\">BACK OFFICE TOOLS</td></tr><tr><td style=\"text-align: " +
    "center\"><span style=\"font-size: 16pt\">chiamate effettuate



    </span>
    </td></tr>");


    if (rs != null) // if rs == null, then there is no ResultSet to view
    while ( rs.next() ) // this will step through our data row-by-row


    {
    /* the next line will get the first column in our current row's ResultSet
    as a String ( getString( columnNumber) ) and output it to the screen */
    //System.out.println("Data from column_name: " + rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) );
    risultati.add(rs.getString(1));
    risultati.add(rs.getString(2));
    risultati.add(rs.getString(3));
    risultati.add(rs.getString(4));
    risultati.add(rs.getString(5));
    risultati.add(rs.getString(6));
    risultati.add(rs.getString(7));
    risultati.add(rs.getString(8));
    risultati.add(rs.getString(9));
    risultati.add(rs.getString(10));

    out.println("ciao");

    out.println("<tr><td>"+rs.getString(1)+"</td><td>"+rs.getString(2)+"</td>" +
    "<td>"+rs.getString(3)+"</td><td>"+rs.getString(4)+"</td>" +
    "<td>"+rs.getString(5)+"</td><td>"+rs.getString(6)+"</td>" +
    "<td>"+rs.getString(7)+"</td><td>"+rs.getString(8)+"</td>" +
    "<td>"+rs.getString(9)+"</td><td>"+rs.getString(10)+"</td></tr>");


    }
    out.println("</body></html>");

    s.close(); // close the Statement to let the database know we're done with it
    con.close(); // close the Connection to let the database know we're done with it

    }
    catch(Exception e){System.out.println("ERROR: " + e);}


    }



    ...mi dice NO DATA FOUND??? lanciando la stessa query da access correttamente mi restituisce i risultati!

    Grazie

  2. #2
    Ok... risolto il problema qui.... ora ce n'è un altro mannaggia quanti problemi per una cosa cosi banale!! :master:
    Dunque cerco di spiegarmi... sperando che qualche anima pia venga in mio soccorso:

    Premendo un pulsante da una form viene richiamata una servlet che fa una select su un db di access. Genero una pagina html (all'interno della servlet) nel seguente modo:

    out.println("<html><head><title></title><meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\"><meta name=\"generator\" content" +
    "=\"CSE HTML Validator Professional (http://www.htmlvalidator.com/)\"></head><body><table style=\"width: 100%; height: 11px\"><tr><img " +
    "src=\"http://intranet:9000/test/images/logo_idealista_it.gif\" /><td colspan=\"3\" style=\"height: 20px; text-align: left\"></td></tr>" +
    "<tr><td colspan=\"3\" style=\"text-align: left\" bgcolor=\"#99ff00\">BACK OFFICE TOOLS</td></tr><tr><td style=\"text-align: " +
    "center\"><span style=\"font-size: 16pt\">chiamate effettuate



    </span>
    </td></tr>");


    if (rs != null) // if rs == null, then there is no ResultSet to view
    while ( rs.next() ) // this will step through our data row-by-row


    {
    /* the next line will get the first column in our current row's ResultSet
    as a String ( getString( columnNumber) ) and output it to the screen */
    //System.out.println("Data from column_name: " + rs.getString(1) + " " + rs.getString(2) + " " + rs.getString(3) );
    risultati.add(rs.getString(1));
    risultati.add(rs.getString(2));
    risultati.add(rs.getString(3));
    risultati.add(rs.getString(4));
    risultati.add(rs.getString(5));
    risultati.add(rs.getString(6));
    risultati.add(rs.getString(7));
    risultati.add(rs.getString(8));
    risultati.add(rs.getString(9));
    risultati.add(rs.getString(10));



    }
    for (int i=0;i<risultati.size();i=i+10){
    out.println("<tr><td>"+risultati.get(i)+"</td><td>"+risultati.get(i+1)+"</td>" +
    "<td>"+risultati.get(i+2)+"</td><td>"+risultati.get(i+3)+"</td>" +
    "<td>"+risultati.get(i+4)+"</td><td>"+risultati.get(i+5)+"</td>" +
    "<td>"+risultati.get(i+6)+"</td><td>"+risultati.get(i+7)+"</td>" +
    "<td>"+risultati.get(i+8)+"</td><td>"+risultati.get(i+9)+"</td></tr>");



    }
    out.println("</body></html>");



    Fa quello che dico io, funziona..... ma solo per la prima volta!!! ...dalla seconda volta in poi i risultati della query vengono messi in coda ai risultati che c'erano gia precedentemente, anche se premo quel pulsante da un altro pc... si vedono i risultati che gia c'erano. Come posso fare per fare una sorta di refresh in modo da vedere sempre e solo i dati che mi servono e non quelli precedenti??

    Grazie a tutti

    Nick

  3. #3
    Devi "azzerare" la variabile risultati che immagino sia una variabile di classe.
    Al mio segnale... scatenate l'inferno!

  4. #4
    Grazie mille....
    avevo provato inizialmente a fare risultati.clear(); all'interno del metodo init della servlet, solo che, non so come mai, non veniva nemmeno sfiorata dal flusso del programma... e cosi ho messo la clear come prima istruzione del doPost.

    Non importa dove è il comando ma l'importante è che funziona

    Grazie ancora

  5. #5
    Ovvio che nella init non funziona. Il metodo init viene richiamato una sola volta all'atto della creazione della servlet. Quindi azzeravi la variabile all'inizio... operazione alquanto inutile

    Al mio segnale... scatenate l'inferno!

  6. #6

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.