Visualizzazione dei risultati da 1 a 4 su 4

Discussione: [JAVA] Corba e MySQL

  1. #1

    [JAVA] Corba e MySQL

    Salve, ho un problemino:
    sto creando un'applicazione che consenta di accedere ad un database in remoto tramite CORBA. In pratica la connessione al database viene effettuata da una classe sul nodo server e l'oggetto di questa classe viene passato al metodo che effettua un inserimento nel database e fa parte dell'oggetto che ho messo sull'ORB.
    Il problema č che quando vado ad eseguire un inserimento, mi viene mostrato: "Can not issue data manipulation statements with executeQuery().".

    Il codice del connettore č:
    codice:
    package server;
    package server;
    
    import java.sql.*;
    
    public class Connettore {
    
    	public Connettore (String url, String driver, String user, String pass)
    	{
    		this.url = url;
    		this.driver = driver;
    		this.user = user;
    		this.pass = pass;
    	}
    	
    	public Connettore Connetti() throws Exception
    	{
    		Class.forName(driver);
    		conn = DriverManager.getConnection(url, user, pass);
    		return this;
    	}
    	
    	public Connection getConnection ()
    	{
    		return conn;
    	}
    	
    	private Connection conn;
    	private String url;
    	private String driver;
    	private String user;
    	private String pass;
    	
    }
    mentre il codice della classe che accede al DB č
    codice:
    package server;
    import org.omg.PortableServer.*;
    import controllo.*;
    import java.sql.*;
    
    public class IscrizioneUtenteImpl extends CIscrizionePOA {
    
    	public IscrizioneUtenteImpl(Connettore conn)
    	{
    		this.conn = conn;
    	}
    	
    	public void SaveDatiUtente(Utente utente)
    	{
    		Manager man = new Manager(conn);
    		String sql = "INSERT INTO utente"+utente.CodiceUtente()+","+utente.Nome()+","+utente.Cognome()+","+utente.Indirizzo()+","+utente.Telefono();
    		try
    		{
    			man.doQuery(sql);
    			
    		}
    		catch (SQLException e) {e.printStackTrace();}
    	}
    	
    	public void SaveCodiceUtente(TesseraSocio tess)
    	{
    		Manager man = new Manager(conn);
    		String sql = "INSERT INTO tesserasocio"+tess.CodiceUtente()+","+tess.Password()+","+tess.SaldoTessera();
    		try
    		{
    			man.doQuery(sql);
    		}
    		catch (SQLException e) {e.printStackTrace();}
    	}
    	
    	private Connettore conn;
    }
    Ho creato anche una classe Manager che si occupa di gestire le query, ma al momento fa giusto quello che serve x quella particolare query. Il codice č:
    codice:
    package server;
    package server;
    
    import java.sql.*;
    
    public class Manager {
    
    	public Manager (Connettore c)
    	{
    		connect = c;
    		ps = null;
    		rs = null;
    	}
    	
    	public void doQuery(String sql) throws SQLException
    	{
    		try
    		{
    			ps = connect.getConnection().prepareStatement(sql);
    			rs = ps.executeQuery(sql);
    		}
    		finally
    		{
    			if (rs != null) {
                    try {rs.close(  );} catch (SQLException e) {}
                }
                if (ps != null) {
                    try {ps.close(  );} catch (SQLException e) {}
                }
                if (connect.getConnection() != null) {
                    try {connect.getConnection().close(  );} catch (SQLException e) {}
                }
    		}
    	}
    	
    	private Connettore connect;
    	private ResultSet rs;
    	private PreparedStatement ps;
    	
    }

    La classe UtenteImpl contiene sono metodi di set e get x i vari attributi.
    Qualcuno saprebbe dirmi dove ho sbagliato? Grazie

  2. #2
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    probabilmente la sintassi

    String sql = "INSERT INTO utente VALUES(" + utente.CodiceUtente() + ", '" + utente.Nome() + "', '" + utente.Cognome() + "', '" + utente.Indirizzo() + "' ,'" + utente.Telefono() + "')";

  3. #3
    Utente di HTML.it L'avatar di floyd
    Registrato dal
    Apr 2001
    Messaggi
    3,837
    quando crei un prepared statement con la query non puoi chiamare executeQuery e dargli di nuovo la query

    ps = connect.getConnection().prepareStatement(sql);
    rs = ps.executeQuery();

  4. #4
    Giusto!
    Ho risolto.
    C'era l'errore di sintassi ed ho fatto eseguire la connessione e la query direttamente all'oggetto. Ora funziona.
    Grazie 1000

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 © 2026 vBulletin Solutions, Inc. All rights reserved.