Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50

    [java] jdbc

    Salve dovrei realizzre una procedura in java utilizzando "JDBC" che mi carica un nuovo database da un file dump di un database mysql del tipo "database.sql" o "database.txt".

    Grazie mille.

    ( Scusate ho sbagliato la sezione nel quale postarlo, volevo metterlo in Java però adesso non riesco a modificarlo )

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327

    Moderazione

    Sposto su Java e correggo il titolo (vedi Regolamento fra le discussioni in rilievo).

    Cosa, in particolare, non riesci a fare?

    Posta il codice che hai prodotto e dicci dove non riesci ad andare avanti.


    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
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    50
    public void leggiNuovoDb(String nome_file) {

    File file = new File(nome_file);
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;

    try {
    fis = new FileInputStream(file);

    // Here BufferedInputStream is added for fast reading.
    bis = new BufferedInputStream(fis);
    dis = new DataInputStream(bis);

    // dis.available() returns 0 if the file does not have more lines.
    while (dis.available() != 0) {
    caricaNuovo(dis.readLine());
    }

    // dispose all the resources after using them.
    fis.close();
    bis.close();
    dis.close();

    }
    catch (FileNotFoundException e) {
    e.printStackTrace();
    }
    catch (IOException e) {
    e.printStackTrace();
    }
    }




    public void caricaNuovo(String database){

    MySQL_Connect db = new MySQL_Connect("schedina");
    if ( !db.connetti() ) {
    System.out.println("Errore durante la connessione.");
    System.out.println( db.getErrore() );
    System.exit(0);
    }

    String query_sql1 = "TRUNCATE TABLE incontri;";
    String query_sql2 = "TRUNCATE TABLE squadre;";

    if ( !db.eseguiAggiornamento(query_sql1) ) {
    System.out.println("Errore nell'aggiornamento!");
    System.out.println( db.getErrore() );
    }

    if ( !db.eseguiAggiornamento(query_sql2) ) {
    System.out.println("Errore nell'aggiornamento!");
    System.out.println( db.getErrore() );
    }

    String query_sql3 = database;

    if ( !db.eseguiAggiornamento(query_sql3) ) {
    System.out.println("Errore nell'aggiornamento!");
    System.out.println( db.getErrore() );
    }

    // Ora chiudo la connessione col Database:
    db.disconnetti();

    }

    il dump del database che è un file "database.sql" viene passato al metodo "leggiNuovoDb" che al suo interno richiama "caricaNuovo", con lo scopo di caricare il dabase su Mysql, purtroppo questa cosa fallisce se nel file di origine gli inserimenti non sono su un' unica riga.


    Grazie mille.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,327
    Questo non è un problema semplice: devi prima leggere tutta l'istruzione (e questo è il punto difficile), quindi passarla al metodo.

    Per leggere tutta l'istruzione devi costruirti un "parser" che si occupa di lggere riga per riga il file, di capire dove comincia l'istruzione e di capire dove finisce. Quindi, una volta letta l'istruzione la ritorna come unico token.

    Non è affatto semplice.


    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se il file fosse tipo CSV potresti tranquillamente andare di LOAD DATA INFILE, ossia una query:

    http://dev.mysql.com/doc/refman/5.0/en/load-data.html

    Per i dump sql(*) (per intenderci, quelli con la struttura delle tabelle e le query tipo "CREATE TABLE..." e "INSERT INTO...") invece puoi tenere a mente un paio di cose:

    i commenti nel dump .sql cominciano con "-"
    le istruzioni dovrebbero essere tutte INSERT INTO (e al limite DROP TABLE e CREATE TABLE, se previste nel dump). Le istruzioni di insert si concludono tutte con ); e nuova riga per la successiva istruzione.

    Potresti anche prendere spunto dal sistema di caricamento di .sql di prodotti quali phpmyadmin

    (*)-e non so se valga lo stesso LOAD DATA INFILE perché normalmente tali dump li importo via phpmyadmin-
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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.