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

    Problemi nell'istanziamento di funzioni da classe a classe

    Buongiorno,

    Il mio problema principale è che all'interno delle mie classi non riesco a istanziare due funzioni da una classe all'altra, di conseguenza nell'import viene visualizzato (Eclipse) quel messaggio di "questo import non viene mai utilizzato" quando invece dovrebbe esserlo

    // classe di connessione e inserimento
    codice:
    package com.main;
    
    import java.sql.Connection;
    import java.sql.*;
    
    public class dbConnection {
    	
    	static Connection conn = null;
    	
    		public static void openC(String[] args) {
    			
    			Connection conn = null;
    			
    			try {
    				Class.forName("com.mysql.jdbc.Driver").newInstance();
    			} catch (Exception ex) {
    				System.out.println("Errore");
    			}
    				
    			try {
    				
    				conn = DriverManager.getConnection("jdbc:mysql://localhost/db_alex","root","25071984");
    				System.out.println("Connessione effettuata");
    			} catch (SQLException ex) {
    				System.out.println("SQlException: " + ex.getMessage());
    				System.out.println("SQLState: " + ex.getSQLState());
    				System.out.println("VendorError: " + ex.getErrorCode());
    			}
    			
    			try {
    				Statement stmt = conn.createStatement();
    				int i = stmt.executeUpdate("INSERT INTO contatti (nome,cognome,indirizzoemail,datadinascita,contenuto) values ('"+nome+"','"+cognome+"','"+indirizzoemail+"','"+datadinascita+"','"+contenuto+"')");
    				System.out.println("Dati inseriti correttamente all'interno del Database");
    			} catch (Exception e) {
    				System.out.println("Errore di inserimento all'interno del Database");
    			}
    		}
    		
    		public static void closeC(String[] args) {
    			if (conn != null) {
    				try {
    					conn.close();
    				} catch (SQLException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		}
    	}
    // file servlet
    codice:
    package com.main;
    
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.sql.*;
    import com.main.*;
    
    /**
     * Servlet implementation class Ricezione
     */
    public class Ricezione extends HttpServlet {
    	private static final long serialVersionUID = 1L;
    	private String[][] String;
           
        /**
         * @see HttpServlet#HttpServlet()
         */
        public Ricezione() {
            super();
            // TODO Auto-generated constructor stub
        }
    
    	/**
    	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    	}
    
    	/**
    	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    	 */
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		// TODO Auto-generated method stub
    		String nome=request.getParameter("nome");
    		String cognome=request.getParameter("cognome");
    		String indirizzoemail=request.getParameter("indirizzoemail");
    		String datadinascita=request.getParameter("datadinascita");
    		String contenuto=request.getParameter("contenuto");
    
    		PrintWriter pw = response.getWriter();
    		pw.write("I tuoi dati sono stati inseriti correttamente nel Database");
    		pw.close();
    		
    		dbConnection.openC(String[] args);
    		dbConnection.closeC(String[] args);
    	}
    }
    I messaggi strani sono:

    import com.main.*; non viene utilizzato
    private String[][] String; non viene utilizzato

    dbConnection.openC(String[] args);
    dbConnection.closeC(String[] args);

    Questi due invece mi dicono "syntax error on tokens, misplaced constructs"

    Che roba è?

    Sono nuovissimo in questo mondo

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

    Re: Problemi nell'istanziamento di funzioni da classe a classe

    Originariamente inviato da donpelajo
    Buongiorno,

    Il mio problema principale è che all'interno delle mie classi non riesco a istanziare due funzioni da una classe all'altra, di conseguenza nell'import viene visualizzato (Eclipse) quel messaggio di "questo import non viene mai utilizzato" quando invece dovrebbe esserlo
    Considerando che le funzioni in Java si chiamano metodi e che i metodi non si istanziano... cos'è di preciso che vuoi fare?

    Perchè il warning (perchè di warning si tratta, non di errore) che dice che l'import non viene usato evidentemente è perchè non ti serve... l'import è obbligatorio solo per quelle classi che non fanno parte dello stesso package della classe in cui si vogliono usare o del package java.lang che viene importato automaticamente.

    I messaggi strani sono:

    import com.main.*; non viene utilizzato
    E mi pare ovvio... le due classi sono nello stesso package quindi l'import è perfettamente inutile

    private String[][] String; non viene utilizzato
    Non ho letto tutto il codice (manca, peraltro, l'uso dei tag CODE quindi il codice è tutto un'accozzaglia), ma evidentemente quell'array non lo stai usando. Poi, evita assolutamente di dare alle variabili dei nomi che coincidono con i nomi delle classi altrimenti ti ritroverai a perdere più tempo ad andare in cerca degli errori, generando un'assurda confusione. Inoltre i nomi delle variabili dovrebbero iniziare con la lettera minuscola (convenzione Java). Le maiuscole lasciale per i nomi delle classi.

    dbConnection.openC(String[] args);
    dbConnection.closeC(String[] args);

    Questi due invece mi dicono "syntax error on tokens, misplaced constructs"

    Che roba è?
    Stai cercando di invocare in modo assolutamente sbagliato i metodi... quando si passano gli argomenti non si deve specificarne il tipo... quello lo si fa solo nella dichiarazione del metodo.

    PS: sei nuovo del mondo Java e cominci con argomenti come le Servlet che fanno parte di JEE (Enterprise Edition) che, quindi, richiedono un'approfondita e non banale conoscenza del framework JSE (Standard Edition)? Fossi in te farei più di qualche passo indietro e comincerei dalle basi...


    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
    Grazie Lele, eh sì infatti mi sto scontrando subito con argomenti "duri" perchè mi è stato richiesto subito di andare in questa direzione, comunque alcune domande non vorrei farti perdere troppo tempo...

    Hai ragione per la terminologia, ancora spesso chiamo metodi le funzioni, anche se non ho capito perchè

    Allora, questa cosa dei package l'ho imparata adesso e ti ringrazio.

    Cosa intendi per i tag CODE? Infatti non lo sto usando.

    Per l'invocazione io ero rimasto che se nel main ho esempio funzione (int x,int y,int z) quando chiamo la funzione chiamo nomeclasse.nomefunzione(int x, int y, int z); In questo senso String[] args mi pare di capire che non viene passato. Ma se non viene passato, nel codice quegli String name che identificano i campi del form vengono sottolineati perchè non associati, pare.

    Quindi mi faresti gentilmente un esempio di come funziona?

    Poniamo questo.

    Io voglio connettermi e disconnettermi.

    Al posto di avere una main che passa String[] args di default voglio che in class ci sia

    class Conn {

    public Conn();

    public... conn() {}
    // conn

    public... disconn() {}
    // disconn

    }

    Ora ci sarà un'altra classe in cui voglio chiamare conn() e disconn(), perdonami l'ignoranza, tipo #include. Tu dici che essendo nello stesso package non c'è bisogno di fare import, quindi procedo subito a istanziarle.

    a questo punto cosa passo in doPost, nomeclasse.nomefunzione() che però non porta niente come argomento? Anche se necessariamente conn e disconn devono passare String[] args?

    Oppure conn e disconn non devono passare niente?

    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da donpelajo
    Grazie Lele, eh sì infatti mi sto scontrando subito con argomenti "duri" perchè mi è stato richiesto subito di andare in questa direzione, comunque alcune domande non vorrei farti perdere troppo tempo...
    Non so chi l'abbia richiesto, ma io non chiederei mai a qualcuno di pilotare uno Shuttle se prima non ha almeno un brevetto di pilota...

    Allora, questa cosa dei package l'ho imparata adesso e ti ringrazio.
    ... fa parte del bagaglio minimo indispensabile per poter programmare in JEE, visto e considerato che le WebApp devono obbligatoriamente risiedere in un package non di default; ergo, bisogna sapere cosa sono i package e come si usano.

    Cosa intendi per i tag CODE? Infatti non lo sto usando.
    Nel forum, il codice va postato all'interno dei tag CODE in modo da mantenerne la formattazione e l'indentazione. E' sufficiente scrivere il tag di apertura prima del codice e quello di chiusura dopo di esso:

    [CODE]
    codice indentato
    [/CODE]

    (maiuscole o minuscole non fa differenza, posso scrivere CODE o code)

    Per l'invocazione io ero rimasto che se nel main ho esempio funzione (int x,int y,int z) quando chiamo la funzione chiamo nomeclasse.nomefunzione(int x, int y, int z);
    Non mi risulta che, in nessun linguaggio, sia così. Se ho un metodo la cui firma è

    codice:
    public void funzione(int x, int y, int z)
    lo si richiama in questo modo

    codice:
    nomeOggetto.funzione(x, y, z);
    Ovviamente le tre variabili (x, y e z) devono essere dichiarate di tiop intero e valorizzate prima di essere usate.

    In questo senso String[] args mi pare di capire che non viene passato. Ma se non viene passato, nel codice quegli String name che identificano i campi del form vengono sottolineati perchè non associati, pare.
    Visto quello che credevi prima, forse ora ti è più chiaro l'errore che facevi... spero.

    Quindi mi faresti gentilmente un esempio di come funziona?
    Spero che quello che ho fatto poco fa sia chiarificatore.

    Poniamo questo.

    Io voglio connettermi e disconnettermi.

    Al posto di avere una main che passa String[] args di default voglio che in class ci sia

    class Conn {

    public Conn();

    public... conn() {}
    // conn

    public... disconn() {}
    // disconn

    }

    Ora ci sarà un'altra classe in cui voglio chiamare conn() e disconn(), perdonami l'ignoranza, tipo #include. Tu dici che essendo nello stesso package non c'è bisogno di fare import, quindi procedo subito a istanziarle.

    a questo punto cosa passo in doPost, nomeclasse.nomefunzione() che però non porta niente come argomento? Anche se necessariamente conn e disconn devono passare String[] args?

    Oppure conn e disconn non devono passare niente?

    Grazie
    Devo dire che non ho capito niente... hai postato una classe che non vuole alcun parametro da nessuna parte (né nel costruttore, né nei metodi), poi dici che vuoi passare String[] args (cioè? String[] args è parte dell firma di un metodo main, che ha a che fare con le applicazioni Desktop e nulla a che vedere con le WebApplications, quindi nulla a che vedere con Servlet e robe varie), poi parli di doPost() che è un metodo di una Servlet che vuole altri tipi di parametri, non stringhe, né array di stringhe...

    Come già ho detto, stai cercando di scalare l'Everest senza avere gli scarponi, né le corde di sicurezza, né i rampini, né nulla. Mi sa che, prima di affrontare questa cosa, dovrai un minimo studiare le basi del linguaggio, che ti mancano completamente.


    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.