Esercitazione MySql-Java

di il
6 risposte

Esercitazione MySql-Java


package javadb;

import java.sql.*;
/*import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;*/

/**
 *
 * @author valerio
 */
public class JavaDB {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws Exception {
    
        createTable();
    }
    
    public static createTable() throws Exception{
        
        try{
            Connection conn = getConnection();
            PreparedStatement create = conn.prepareStatement("CREATE TABLE tablename3(id number PRIMARY KEY, attributo VARCHAR2(60));");
            create.executeUpdate();
            
        }catch(Exception e){
            
            System.out.println(e);
        }finally{
            System.out.println("Funzione completata");
        }
    }
    
    public static Connection getConnection() throws Exception {
        
        try{
            
            
            String url="jdbc:oracle:thin:@localhost:1522:Orcl";
            String user = "SYSTEM";
            String pw = "Scarpone2";
            
            
            
            Connection conn = null;
            
            conn = DriverManager.getConnection(url,user,pw);
            System.out.println("Connesso!");
            
            return conn;
            
        }catch(Exception e){
            System.out.println("Errore: " + e);
        }
        
        return null;
    }  
}
Mi sto esercitando nella creazione di una tabella in Oracle tramite Java. Stranamente la riga in SQL se la scrivo su SQL Developer funziona benissimo mentre in Java restituisce il seguente errore:

Connesso!
java.sql.SQLSyntaxErrorException: ORA-00911: carattere non valido

Funzione completata
BUILD SUCCESSFUL (total time: 3 seconds)

6 Risposte

  • Re: Esercitazione MySql-Java

    giulio0 ha scritto:


    
                PreparedStatement create = conn.prepareStatement("CREATE TABLE tablename3(id number PRIMARY KEY, attributo VARCHAR2(60));");
    
    java.sql.SQLSyntaxErrorException: ORA-00911: carattere non valido
    È il ";" finale che non ci va. Detto in generale, quando esegui uno statement da Java, il ";" finale NON serve.
  • Re: Esercitazione MySql-Java

    Avevi ragione.
    
    package javadb;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    /**
     *
     * @author valerio
     */
    public class JavaDB {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
        
            //createTable();
            insert();
        }
        
        public static void insert() throws Exception{
            
            final int id = 1;
            final String attributo = "Moto";
            try{
                Connection conn = getConnection();
                PreparedStatement inserted = conn.prepareStatement("INSERT INTO (id,attributo) tablename6 VALUES ("+ id +",'"+ attributo +"')");
                inserted.executeUpdate();
            }catch (Exception e){
                System.out.println(e);
            }finally{
                System.out.println("Inserimento completato");
            }
        }
        
        public static createTable() throws Exception{
            
            try{
                Connection conn = getConnection();
                PreparedStatement create = conn.prepareStatement("CREATE TABLE tablename6(id number PRIMARY KEY, attributo VARCHAR2(60))");
                create.executeUpdate();
            }catch(Exception e){     
                System.out.println(e);
            }finally{
                System.out.println("Funzione completata");
            }
        }
        
        public static Connection getConnection() throws Exception {
            
            try{
                
                
                String url="jdbc:oracle:thin:@localhost:1522:Orcl";
                String user = "SYSTEM";
                String pw = "Scarpone2";
                
                
                
                Connection conn = null;
                
                conn = DriverManager.getConnection(url,user,pw);
                System.out.println("Connesso!");
                
                return conn;
                
            }catch(Exception e){
                System.out.println("Errore: " + e);
            }
            
            return null;
        }  
    }

    Adesso stavo provando ad inserire qualche parametro con il metodo insert() ma mi restituisce:

    Connesso!
    java.sql.SQLSyntaxErrorException: ORA-00928: parola chiave SELECT mancante

    Inserimento completato
    BUILD SUCCESSFUL (total time: 3 seconds)
  • Re: Esercitazione MySql-Java

    Ok risolto ho fatto un errore davvero stupido di sintassi in SQL
  • Re: Esercitazione MySql-Java

    giulio0 ha scritto:


    Adesso stavo provando ad inserire qualche parametro con il metodo insert() ma mi restituisce:

    Connesso!
    java.sql.SQLSyntaxErrorException: ORA-00928: parola chiave SELECT mancante
    La sintassi

    INSERT INTO (id,attributo) tablename6 VALUES ("+ id +",'"+ attributo +"')

    è sbagliata. Il nome della tabella va sicuramente prima della lista delle colonne. E comunque non va molto bene "iniettare" i valori tramite concatenazione delle stringhe. Sfrutta correttamente il PreparedStatement.
  • Re: Esercitazione MySql-Java

    Si avevi ragione. Adesso sto provando a fare il SELECT di ciò che ho messo nella tabella ma comunque non va
    
    package javadb;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    
    /**
     *
     * @author valerio
     */
    public class JavaDB {
    
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
        
            //createTable();
            //insert();
            get();
        }
        
        public static void get() throws Exception {
            try{
                String attributo;
                int id;
                Connection conn = getConnection();
                PreparedStatement stmt = conn.PreparedStatement("SELECT id, attributo FROM tablename6 WHERE id = ?");
                stmt.setString(1, "1");
                ResultSet rs = stmt.executeQuery();
                
                while(rs.next()){
                    id = rs.getInt(1);
                    attributo = rs.getString(2);
                    System.out.println("Id = "+id+"Attributo = "+attributo);
                }
                stmt.close();   
                
            }catch(Exception e){
                System.out.println(e);
            }finally{
                System.out.println("Operazione riuscita!");
            }
        }
        
        public static void insert() throws Exception{
            
            final int id = 1;
            final String attributo = "Moto";
            try{
                Connection conn = getConnection();
                PreparedStatement inserted = conn.prepareStatement("INSERT INTO tablename6 VALUES (?,?)");
                inserted.setInt(1, id);
                inserted.setString(2, attributo);
                inserted.executeUpdate();
            }catch (Exception e){
                System.out.println(e);
            }finally{
                System.out.println("Inserimento completato");
            }
        }
        
        public static createTable() throws Exception{
            
            try{
                Connection conn = getConnection();
                PreparedStatement create = conn.prepareStatement("CREATE TABLE tablename6(id number PRIMARY KEY, attributo VARCHAR2(60))");
                create.executeUpdate();
            }catch(Exception e){     
                System.out.println(e);
            }finally{
                System.out.println("Funzione completata");
            }
        }
        
        public static Connection getConnection() throws Exception {
            
            try{
                
                
                String url="jdbc:oracle:thin:@localhost:1522:Orcl";
                String user = "SYSTEM";
                String pw = "Scarpone2";
                
                
                
                Connection conn = null;
                
                conn = DriverManager.getConnection(url,user,pw);
                System.out.println("Connesso!");
                
                return conn;
                
            }catch(Exception e){
                System.out.println("Errore: " + e);
            }
            
            return null;
        }  
    }
    il ritorno è questo:

    Connesso!
    java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: java.sql.Connection.PreparedStatement
    Operazione riuscita!
    BUILD SUCCESSFUL (total time: 2 seconds)
  • Re: Esercitazione MySql-Java

    PreparedStatement stmt = conn.PreparedStatement("SELECT id, attributo FROM tablename6 WHERE id = ?");
Devi accedere o registrarti per scrivere nel forum
6 risposte