Java

di il
24 risposte

Java

Buonasera volevo chiedervi se è corretto cioè:

public List<Recensioni> ReadRecensioni() {
List<Recensioni> elenco = new List<Recensioni>(); // bisogna gestire l’eventuale errore run time
try{
// aprire una connessione con il DBMS string 
Connect conn= DBconnection.getConnection();
 con.Open(); 
string query = “SELECT *” + “FROM Recensioni” +” Where id_hotel=Id_hotel”;
 MySqlCommand cmd = new MySqlCommand(query, con);
// chiediamo al server di eseguire la query e otteniamo i dati richiesti MySqlDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
Recensioni R = new Recensioni();
R.nomeHotel= string reader [“nomeHotel”];
R.prezzoHotel= Float reader [“prezzoHotel”];
R.descrizioneHotel= string reader[“descrizioneHotel”];
Elenco.add(R);
}

reader.Close();
con.Close(); // si chiude la connessione per liberare le risorse del server }
catch(Exception ex)

{ Errore = ex.Message; } return elenco;
}

24 Risposte

  • Re: Java

    saraciao ha scritto:


    Buonasera volevo chiedervi se è corretto
    No non è assolutamente corretto. Ma più che altro perché hai messo sintassi e nomi proprio sbagliati.

    new List<Recensioni>() non va bene. List è una interfaccia, non la puoi istanziare. Semmai new ArrayList<Recensioni>()

    Connect conn no, semmai Connection conn

    e poi dopo fai con.Open(); (con non conn e poi Open con la maiuscola che è sbagliato)

    string con la "s" minuscola è sbagliato.

    ecc....

    Scusa la domanda ma ... il codice provi a compilarlo? O lo scrivi così a caso? Perché se provassi a compilarlo ti darebbe una svagonata di errori!
  • Re: Java

    andbin ha scritto:


    saraciao ha scritto:


    Buonasera volevo chiedervi se è corretto
    No non è assolutamente corretto. Ma più che altro perché hai messo sintassi e nomi proprio sbagliati.

    new List<Recensioni>() non va bene. List è una interfaccia, non la puoi istanziare. Semmai new ArrayList<Recensioni>()

    Connect conn no, semmai Connection conn

    e poi dopo fai con.Open(); (con non conn e poi Open con la maiuscola che è sbagliato)

    string con la "s" minuscola è sbagliato.

    ecc....

    Scusa la domanda ma ... il codice provi a compilarlo? O lo scrivi così a caso? Perché se provassi a compilarlo ti darebbe una svagonata di errori!
    Si solo che poi lo riscrivo e quindi commetto errori...ma oltre a questo poi il codice è corretto?
    Grazie mille in anticipo
  • Re: Java

    saraciao ha scritto:


    ma oltre a questo poi il codice è corretto?
    No, ripeto, NON è affatto corretto.

    Where id_hotel=Id_hotel non ha senso è la stessa colonna da entrambi i lati del = ovvero è sempre "vero". E comunque hai messo le stringhe tra i quotation mark “ ” mentre invece per le stringhe si possono solo usare gli apici doppi ASCII cioè " "

    E comunque non so cosa sia MySqlCommand né quel MySqlDataReader (che tra l'altro hai commentato). Roba tua? Che fa cosa?

    E espressioni con sintassi del tipo string reader [“nomeHotel”] non vogliono dire assolutamente nulla, non esistono e non hanno senso.

    Ah, forse Connect è altra roba tua? (prima pensavo avessi sbagliato a scrivere il Connection di java.sql)

    Quindi la questione è molto semplice: vuoi iniziare a scrivere le cose in modo logico e sensato? .... o continui a scrivere cose a caso?
  • Re: Java

    andbin ha scritto:


    saraciao ha scritto:


    ma oltre a questo poi il codice è corretto?
    No, ripeto, NON è affatto corretto.

    Where id_hotel=Id_hotel non ha senso è la stessa colonna da entrambi i lati del = ovvero è sempre "vero". E comunque hai messo le stringhe tra i quotation mark “ ” mentre invece per le stringhe si possono solo usare gli apici doppi ASCII cioè " "

    E comunque non so cosa sia MySqlCommand né quel MySqlDataReader (che tra l'altro hai commentato). Roba tua? Che fa cosa?

    E espressioni con sintassi del tipo string reader [“nomeHotel”] non vogliono dire assolutamente nulla, non esistono e non hanno senso.

    Ah, forse Connect è altra roba tua? (prima pensavo avessi sbagliato a scrivere il Connection di java.sql)

    Quindi la questione è molto semplice: vuoi iniziare a scrivere le cose in modo logico e sensato? .... o continui a scrivere cose a caso?
    
    package progetto5;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import DaoTripInTravel.DBconnection;
    
    public class DaoRecensioni<Recensioni> {
    	ArrayList <Recensioni> elenco = new ArrayList<Recensioni>();
    	{
    		Connection conn = DBconnection.getConnection();
    		String url ="(SELECT* " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; //interrogazione per il rilevamento di tutte le recensioni relative ad un hotel
    			try 
    			{
    				PreparedStatement stm = conn.prepareStatement(url);
    				Statement stmt = conn.createStatement();
    		        ResultSet sr=stm.executeQuery(url);
    				int i = stm.executeUpdate();
    			    if(i == 1) {
    			    	    return true;
    			    	  }
    			        } catch (SQLException ex) {
    			    	        ex.printStackTrace();
    			    	    }
    			    	    return false;
    	}
    
    public ArrayList <Recensioni> elenco1 = new ArrayList<Recensioni>();//interrogazione per eliminare recensioni relative ad un hotel
    	{
    		Connection conn2= DBconnection.getConnection();
    		String url ="(SELECT* " + 
    				" delete from recensione R " + 
    				"where R.id_hotel =R.id_hotel))";
    			try 
    			{
    				PreparedStatement stm = conn2.prepareStatement(url);
    				Statement stmt = conn2.createStatement();
    		        ResultSet sr=stm.executeQuery(url);
    		        int j = stm.executeUpdate();
    			    if(j == 1) {
    			    	    return true;
    			    	  }
    			        } catch (SQLException ex) {
    			    	        ex.printStackTrace();
    			    	    }
    			    	    return false;
    	          }
    ArrayList <Recensioni> elenco2 = new ArrayList<Recensioni>();//interrogazione per inserire recensioni relative ad un hotel
    {
    	Connection conn1 = DBconnection.getConnection();
    	String url1 = ("INSERT INTO user VALUES (NULL, ?, ?, ?,?)");
    	try {
            PreparedStatement stm = conn1.prepareStatement(url1);
    		stm.setString(1, Nome);
            stm.setString(2, descrizione);
            stm.setInt(3, prezzo);
            stm.setDate(4, datarecensione);
            int k = stm.executeUpdate();
           if(k == 1) {
               return true;
          }
    	} catch (SQLException ex1) {
            ex1.printStackTrace();
        }
        return false;
      }
    
    }
      
    mi puoi aiutare?
  • Re: Java

    saraciao ha scritto:


    mi puoi aiutare?
    Scusa ma come posso aiutarti se continui a scrivere cose senza senso??

    Hai fatto una classe DaoRecensioni che tra l'altro l'hai resa "generica", hai scritto class DaoRecensioni<Recensioni> .
    Questo <Recensioni> NON è il tuo tipo Recensioni, è una type variable, è un "nomignolo" usato come segnaposto nella classe. E usare appunto un tuo tipo esistente è fuorviante oltre che sbagliato. Non serve che questa classe DaoRecensioni sia "generica"!!

    E poi comunque apri la classe con { poi ci metti una variabile "di istanza" (quel ArrayList <Recensioni> elenco) e poi apri un blocco di codice con { } . E i metodi DOVE li definisci??

    E poi hai un SQL di SELECT ma fai un stm.executeUpdate() ... ma che senso ha??

    Ecc...
  • Re: Java

    andbin ha scritto:


    saraciao ha scritto:


    mi puoi aiutare?
    Scusa ma come posso aiutarti se continui a scrivere cose senza senso??

    Hai fatto una classe DaoRecensioni che tra l'altro l'hai resa "generica", hai scritto class DaoRecensioni<Recensioni> .
    Questo <Recensioni> NON è il tuo tipo Recensioni, è una type variable, è un "nomignolo" usato come segnaposto nella classe. E usare appunto un tuo tipo esistente è fuorviante oltre che sbagliato. Non serve che questa classe DaoRecensioni sia "generica"!!

    E poi comunque apri la classe con { poi ci metti una variabile "di istanza" (quel ArrayList <Recensioni> elenco) e poi apri un blocco di codice con { } . E i metodi DOVE li definisci??

    E poi hai un SQL di SELECT ma fai un stm.executeUpdate() ... ma che senso ha??

    Ecc...
    class DaoRecensioni<Recensioni> questo l'ho scritto cosi perchè il compilatore me lo correggeva cosi
    
    package progetto5;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Set;
    
    import DaoTripInTravel.DBconnection;
    
    public interface DaoRecensioni {
    
    	    Reviews getReviews();
    	    Set<Reviews> getAllReviews();
    	    boolean deleteReviews();
    	    boolean InsertReviews();
    }
      public boolean insertReviews( User review) { //inserisci recensione 
    	  Connection conn = DBconnection.getConnection();
        try {
            PreparedStatement stm = conn.prepareStatement("INSERT INTO user VALUES (NULL, ?, ?, ?,?)");
            stm.setString(1, review.getNome());
            stm.setString(2, review.getPrezzo());
            stm.setInt(3, review.getdescrizione());
            stm.setDate(4, review.getDataRecensione);
            int i = stm.executeUpdate();
          if(i == 1) {
            return true;
          }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return false;
        }
      public boolean deleteReview(int id) {  //cancella recensione 
    	    Connector connector = new Connector();
    	    Connection connection = connector.getConnection();
    	    try {
    	        Statement stmt = conn.createStatement();
    	        int i = stmt.executeUpdate("DELETE FROM Review WHERE id=" + id);
    	      if(i == 1) {
    	    return true;
    	      }
    	    } catch (SQLException ex) {
    	        ex.printStackTrace();
    	    }
    	    return false;
    	}
      ArrayList <Reviews> elenco = new ArrayList<Reviews>();
    	{
    		Connection conn = DBconnection.getConnection();
    		String url ="(SELECT * " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; //interrogazione per il rilevamento di tutte le recensioni relative ad un hotel
    			try 
    			{
    				PreparedStatement stm = conn.prepareStatement(url);
    				Statement stmt = conn.createStatement();
    		               ResultSet sr=stm.executeQuery(url);
    				
    		       }
    			catch(SQLException e)
    			{
    			 System.err.println("sql exception");
    			 return null;	
    			}
       }
    	
    }
    cosi è giusto??
    
  • Re: Java

    Senti, mi dici COME è fatta la tabella recensione (che in teoria dovrebbe chiamarsi recensioni ) ?
    Nome colonna e tipo colonna (almeno)

    Anzi, da un qualche tool (grafico/console) del MySQL ovviamente, fai: DESCRIBE recensione
    e posta il risultato.

    EDIT: ah, mostra anche cosa fa DBconnection.getConnection()
  • Re: Java

    andbin ha scritto:


    Senti, mi dici COME è fatta la tabella recensione (che in teoria dovrebbe chiamarsi recensioni ) ?
    Nome colonna e tipo colonna (almeno)

    Anzi, da un qualche tool (grafico/console) del MySQL ovviamente, fai: DESCRIBE recensione
    e posta il risultato.

    EDIT: ah, mostra anche cosa fa DBconnection.getConnection()
    Contiene il prezzo, la descrizione la data della recensione
    DBconnection.getConnection() dovrebbe leggere la recensione, inserire recensioni e cancellarle
  • Re: Java

    Crossposting

    "hwupgrade.it/forum/showthread.php?t=2903998"
  • Re: Java

    @saraciao stai facendo un SACCO di errori.
    SE, piu' o meno, l'idea di fondo c'e', la sua implementazione pratica NON C'E' proprio.

    Purtroppo (o per fortuna) il computer non legge nel pensiero e non interpreta i sogni e quindi se non scrivi le cose SUPER ESATTAMENTE come vanno scritte, il compilatore non compila e QUANDO compila, non e' detto che funzioni.

    Ad esempio
    String url ="(SELECT * " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; 
    compila MA (la where) E' SBAGLIATA!
    Quindi il programma non funzionera' come ti aspetti!

    Il problema e' che sono errori di base, non delle sviste.
    Accedere ad un database da Java vuol dire far andare daccordo due che si stanno un pochino sulle scatole: bisogna CONVINCERLI ad andare daccordo, a suon di mazzate

    Quindi DEVI sapere come fare le query sul database e corrispondentemente come convincere Java a generare una query che non sia indigesta al DBMS.

    Dal codice che hai postato, ci sono carenze SIA a livello Java che SQL.

    Un passo in avanti lo puoi fare in questo modo:
    PRIMA srova il modo di fare una query CORRETTA sul db, POI usa Java per creare ESATTAMENTE la stessa string.
    SE progranatore scrive il codice cosi gli vengono tagliate le mani MA per iniziare va ancora bene.
  • Re: Java

    migliorabile ha scritto:


    @saraciao stai facendo un SACCO di errori.
    SE, piu' o meno, l'idea di fondo c'e', la sua implementazione pratica NON C'E' proprio.

    Purtroppo (o per fortuna) il computer non legge nel pensiero e non interpreta i sogni e quindi se non scrivi le cose SUPER ESATTAMENTE come vanno scritte, il compilatore non compila e QUANDO compila, non e' detto che funzioni.

    Ad esempio
    String url ="(SELECT * " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; 
    compila MA (la where) E' SBAGLIATA!
    Quindi il programma non funzionera' come ti aspetti!

    Il problema e' che sono errori di base, non delle sviste.
    Accedere ad un database da Java vuol dire far andare daccordo due che si stanno un pochino sulle scatole: bisogna CONVINCERLI ad andare daccordo, a suon di mazzate

    Quindi DEVI sapere come fare le query sul database e corrispondentemente come convincere Java a generare una query che non sia indigesta al DBMS.

    Dal codice che hai postato, ci sono carenze SIA a livello Java che SQL.

    Un passo in avanti lo puoi fare in questo modo:
    PRIMA srova il modo di fare una query CORRETTA sul db, POI usa Java per creare ESATTAMENTE la stessa string.
    SE progranatore scrive il codice cosi gli vengono tagliate le mani MA per iniziare va ancora bene.
    Ma oltre alla where il resto è giusto?
  • Re: Java

    migliorabile ha scritto:


    @saraciao stai facendo un SACCO di errori.
    SE, piu' o meno, l'idea di fondo c'e', la sua implementazione pratica NON C'E' proprio.

    Purtroppo (o per fortuna) il computer non legge nel pensiero e non interpreta i sogni e quindi se non scrivi le cose SUPER ESATTAMENTE come vanno scritte, il compilatore non compila e QUANDO compila, non e' detto che funzioni.

    Ad esempio
    String url ="(SELECT * " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; 
    compila MA (la where) E' SBAGLIATA!
    Quindi il programma non funzionera' come ti aspetti!

    Il problema e' che sono errori di base, non delle sviste.
    Accedere ad un database da Java vuol dire far andare daccordo due che si stanno un pochino sulle scatole: bisogna CONVINCERLI ad andare daccordo, a suon di mazzate

    Quindi DEVI sapere come fare le query sul database e corrispondentemente come convincere Java a generare una query che non sia indigesta al DBMS.

    Dal codice che hai postato, ci sono carenze SIA a livello Java che SQL.

    Un passo in avanti lo puoi fare in questo modo:
    PRIMA srova il modo di fare una query CORRETTA sul db, POI usa Java per creare ESATTAMENTE la stessa string.
    SE progranatore scrive il codice cosi gli vengono tagliate le mani MA per iniziare va ancora bene.
    Ma oltre alla where il resto è giusto?
  • Re: Java

    saraciao ha scritto:


    migliorabile ha scritto:


    @saraciao stai facendo un SACCO di errori.
    SE, piu' o meno, l'idea di fondo c'e', la sua implementazione pratica NON C'E' proprio.

    Purtroppo (o per fortuna) il computer non legge nel pensiero e non interpreta i sogni e quindi se non scrivi le cose SUPER ESATTAMENTE come vanno scritte, il compilatore non compila e QUANDO compila, non e' detto che funzioni.

    Ad esempio
    String url ="(SELECT * " + 
    				"from recensione  " + 
    				"where id_Hotel = id_Hotel))"; 
    compila MA (la where) E' SBAGLIATA!
    Quindi il programma non funzionera' come ti aspetti!

    Il problema e' che sono errori di base, non delle sviste.
    Accedere ad un database da Java vuol dire far andare daccordo due che si stanno un pochino sulle scatole: bisogna CONVINCERLI ad andare daccordo, a suon di mazzate

    Quindi DEVI sapere come fare le query sul database e corrispondentemente come convincere Java a generare una query che non sia indigesta al DBMS.

    Dal codice che hai postato, ci sono carenze SIA a livello Java che SQL.

    Un passo in avanti lo puoi fare in questo modo:
    PRIMA srova il modo di fare una query CORRETTA sul db, POI usa Java per creare ESATTAMENTE la stessa string.
    SE progranatore scrive il codice cosi gli vengono tagliate le mani MA per iniziare va ancora bene.
    Così è giusto ?
    
    
    package progetto5;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.Set;
    
    import DaoTripInTravel.DBconnection;
    
    public interface DaoRecensioni {
    
    	    Reviews getReviews();
    	    Set<Reviews> getAllReviews();
    	    boolean deleteReviews();
    	    boolean InsertReviews();
    }
      public boolean insertReviews( User review) { //inserisci recensione 
    	  Connection conn = DBconnection.getConnection();
        try {
            PreparedStatement stm = conn.prepareStatement("INSERT INTO user VALUES (NULL, ?, ?, ?,?)");
            stm.setString(1, review.getNome());
            stm.setString(2, review.getPrezzo());
            stm.setInt(3, review.getdescrizione());
            stm.setDate(4, review.getDataRecensione);
            int i = stm.executeUpdate();
          if(i == 1) {
            return true;
          }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return false;
        }
      public boolean deleteReview(int id) {  //cancella recensione 
    	    Connector connector = new Connector();
    	    Connection connection = connector.getConnection();
    	    try {
    	        Statement stmt = conn.createStatement();
    	        int i = stmt.executeUpdate("DELETE FROM Review WHERE id=" + id);
    	      if(i == 1) {
    	    return true;
    	      }
    	    } catch (SQLException ex) {
    	        ex.printStackTrace();
    	    }
    	    return false;
    	}
      ArrayList <Reviews> elenco = new ArrayList<Reviews>();
    	{
    		Connection conn = DBconnection.getConnection();
    		String url ="(SELECT * " + 
    				"from recensione  " + 
    			"where nome=“?”)";//interrogazione per il rilevamento di tutte le recensioni relative ad un hotel
    			try 
    			{
    				PreparedStatement stm = conn.prepareStatement(url);
    				Statement stmt = conn.createStatement();
    		               ResultSet sr=stm.executeQuery(url);
    				
    		       }
    			catch(SQLException e)
    			{
    			 System.err.println("sql exception");
    			 return null;	
    			}
       }
    	
    }
    
  • Re: Java

    saraciao ha scritto:


    Contiene il prezzo, la descrizione la data della recensione
    Scusa ma fare un DESCRIBE [nometabella]
    è difficile?
    Hai già fatto almeno 1 volta una query "a mano" con un qualche tool per MySQL??
    Questo è importante da sapere fare ...

    saraciao ha scritto:


    DBconnection.getConnection() dovrebbe leggere la recensione, inserire recensioni e cancellarle
    Nooo. getConnection() dovrebbe SOLO fornire la Connection, NON sa nulla di recensioni, pippo, pluto, paperino, ecc...
    E l'unica cosa che non so, è come l'hai implementato. Perché un conto è se quel getConnection() fornisce una NUOVA Connection ad ogni invocazione ... un altro conto è se in DBconnection c'è un meccanismo banale di "caching" per cui RIusa la stessa Connection.
    Questo conta e "impatta" su tutti i metodi di query.

    saraciao ha scritto:


    Ma oltre alla where il resto è giusto?
    NO, come te lo devo dire?
Devi accedere o registrarti per scrivere nel forum
24 risposte