Esercitazione MySql-Java

di Anonimizzato26166 il
6 risposte

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

  • 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.
  • 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)
  • Ok risolto ho fatto un errore davvero stupido di sintassi in SQL
  • 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.
  • 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)
  • PreparedStatement stmt = conn.PreparedStatement("SELECT id, attributo FROM tablename6 WHERE id = ?");
Devi accedere o registrarti per scrivere nel forum
6 risposte