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

    INSERT database tramite Classe Scanner

    Ciao a tutti, vi ripropongo un quesito.
    sono arrivato ad un livello medio decente di java, arrivando fino al multi thread.
    sto smanettando un po con i database, e diciamo che la sintassi l'ho capita, non è difficilissima. Vorrei farvi una domanda però: è possibile eseguire una insert, tramite la classe scanner?
    io ho i miei bei campi sulla tabella del database, alcuni già inizializzati.
    vorrei ad esempio inserire un nuovo nome e un nuovo cognome, utilizzando però lo scanner.
    idee?
    grazie, Davide

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    In che senso?
    La classe Scanner serve a leggere del testo ed effettuare semplici parsing.

    Se intendi usare la classe Scanner per leggere (da tastiera o da file) i valori da inserire poi nei vari campi del record la cosa è certamente fattibile.

    Ma l'inserimento vero e proprio, ovvero l'esecuzione di una INSERT SQL, no... quella va fatta usando l'apposito Statement (per JDBC) o i metodi messi a disposizione dal framework di persistenza (se ne hai uno).


    Non so se ho capito bene quello che chiedi, eventualmente prova a rispiegare bene ciò che vorresti fare.


    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
    si, ovviamente la sintassi da usare sarà Insert bla bla inizializzando uno Statement.
    voglio che la cosa funzioni così
    si attiva lo scanner inserisco un nome, faccio l'insert del nome
    ("va a capo")
    inserisco un cognome, faccio l'insert del cognome

    e così via per i dati che mi servono.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quindi una cosa del genere...

    codice:
    Scanner sc = new Scanner( System.in );
    String nome = sc.readLine();   // Leggo il nome
    String cognome = sc.readLine();   // Leggo il cognome
    ...
    
    StringBuilder sql = new StringBuilder("INSERT INTO tabella VALUES('";
    sql.append( nome );
    sql.append("','");
    sql.append( cognome );
    ...
    sql.append("');");
    
    Statement stmt = ...;
    int ret = stmt.executeUpdate( sql.toString() );
    "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

  5. #5
    Originariamente inviato da LeleFT
    Quindi una cosa del genere...

    codice:
    String nome = sc.readLine();   // Leggo il nome
    questo sarebbe l'equivalente di scanner.next? perchè readline non lo trova

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Scusa, errore mio... sono abituato col BufferedReader.
    E' l'equivalente di nextLine().


    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

  7. #7
    ok! tutto risolto! Grazie mille. ho porvato utilizzando anche un altro metodo, se mai a qualcuno servisse. Si chiama preparedStatement. grazie ancora!!

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da psyche86
    ok! tutto risolto! Grazie mille. ho porvato utilizzando anche un altro metodo, se mai a qualcuno servisse. Si chiama preparedStatement. grazie ancora!!
    Sì, PreparedStatement è una sottoclasse di Statement che consente di gestire al meglio i dati secondo i criteri del DBMS, dato che si occupa delle conversioni in automatico.


    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

  9. #9
    ti chiedo un'altra cosa anche se va un po off topic.
    se volessi creare un metodo (Creazione) in un'altra classe (CreaConnessione.java) per la connessione al DB inserendo questo frammento di codice come dovrei fare?

    codice:
    String driver = "com.mysql.jdbc.Driver";
    Class.forName(driver);
    String url = "jdbc:mysql://localhost:3306/rubrica";
    Connection con = DriverManager.getConnection(url, "root", "");
    ho fatto diversi tentativi, ma la classe del main non mi trova più il parametro "con", anche se lo passo quando invoco il metodo. tanto questo pezzetto è uguale praticamente per tutti, cambieranno al limite le credenziali

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.