Java e Mysql

di il
11 risposte

Java e Mysql

Sto cercando di creare un programma con Java dove collego GUI a MySQL.

    public static void creaTabella() {
        try {
            Connection con = getConnection();

            PreparedStatement crea = con.prepareStatement(
                     "CREATE DATABASE IF NOT EXISTS db;"
                    + "USE db;"
                    + "CREATE TABLE IF NOT EXISTS tabella"
                    + "(codice_articolo INT NOT NULL AUTO_INCREMENT,"
                    + "descrizione VARCHAR(255),"
                    + "quatita int,"
                    + "prezzo DOUBLE(12,2),"
                    + "totale DOUBLE(12,2),"
                    + "scadenza DATE,"
                    + "PRIMARY KEY(codice_articolo));");
            crea.executeUpdate();
        } catch (Exception e) {
            System.out.println(e);
        }
    }
Quando avvio il programma questo è quello che stampa:


Connected
java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USE db;CREATE TABLE IF NOT EXISTS tabella(codice_articolo INT NOT NULL AUTO_I...' at line 1



Che cosa ho fatto che non va? Grazie...

11 Risposte

  • Re: Java e Mysql

    Sbagliato il comando sql
  • Re: Java e Mysql

    Che cosa c'è di sbagliato? Io ho provato lo stesso codice su mysql workbench e ha funzionato...
  • Re: Java e Mysql

    Prova mettere gli spazi prima della chiusura delle virgolette.
    ad esempio:
    
    + "CREATE TABLE IF NOT EXISTS tabella "
    
    sennò la stringa tradotta in query è senza spazi, e diventa tutta attaccata.
  • Re: Java e Mysql

    Ho provato così:
        public static void creaTabella() {
            try {
                Connection con = getConnection();
    
                PreparedStatement crea = con.prepareStatement(
                        "CREATE DATABASE IF NOT EXISTS db ; "
                        + "USE db ; "
                        + "CREATE TABLE IF NOT EXISTS tabella "
                        + "(codice_articolo INT NOT NULL AUTO_INCREMENT , "
                        + "descrizione VARCHAR(255) , "
                        + "quatita int , "
                        + "prezzo DOUBLE(12,2) , "
                        + "totale DOUBLE(12,2) , "
                        + "scadenza DATE , "
                        + "PRIMARY KEY(codice_articolo)) : ");
    
                crea.executeUpdate();//<<<== questo non va
            } catch (Exception e) {
                System.out.println(e);
            }
        }

    Ancora lo stesso errore.
  • Re: Java e Mysql

    Ok, Ho provato a mandare i comandi a pezzatti e sembra funzionare:
     public static void creaTabella() {
            try {
                Connection con = getConnection();
    
                PreparedStatement crea = con.prepareStatement(
                        "CREATE DATABASE IF NOT EXISTS db;");
                crea.executeUpdate();
    
                crea = con.prepareStatement("USE db;");
                crea.executeUpdate();
                crea = con.prepareStatement("CREATE TABLE IF NOT EXISTS tabella"
                        + "(codice_articolo INT NOT NULL AUTO_INCREMENT,"
                        + "descrizione VARCHAR(255),"
                        + "quatita int,"
                        + "prezzo DOUBLE(12,2),"
                        + "totale DOUBLE(12,2),"
                        + "scadenza DATE,"
                        + "PRIMARY KEY(codice_articolo));");
    
                crea.executeUpdate();
                System.out.println("Fatto?");
            
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    Ha stampato "Fatto?"...
  • Re: Java e Mysql

    Adesso ho un altro problema
      System.out.println(con.createStatement().executeQuery("SELECT COUNT(*) FROM tabella;"));
    Questa riga dovrebbe stampare zero, invece stampa questo
    com.mysql.cj.jdbc.result.ResultSetImpl@7109d489
    Che succede?


    Il codice l'ho fatto uguale uguale su mysql workbench e funziona, quindi il codice mysql dovrebbe essere giusto...
  • Re: Java e Mysql

    p0ll0_ ha scritto:


    Questa riga dovrebbe stampare zero, invece stampa questo
    com.mysql.cj.jdbc.result.ResultSetImpl@7109d489
    Che succede?
    Ma veramente pensi di poter "stampare" così un risultato intelleggibile da un oggetto complesso come un ResultSet?
  • Re: Java e Mysql

    Beh io vorrei che stampasse zero, come si fa? Grazie ?
  • Re: Java e Mysql

    p0ll0_ ha scritto:


    Beh io vorrei che stampasse zero, come si fa?
    Scorri al primo record e prendi il valore della prima (e unica) colonna.
  • Re: Java e Mysql

    Https://docs.oracle.com/javase/tutorial/jdbc/basics/processingsqlstatements.html
  • Re: Java e Mysql

    E' tornato il maestro
Devi accedere o registrarti per scrivere nel forum
11 risposte