Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    Inserire dati in un database mySQL



    Sono alle prime armi con la gestione dei database, per cui vi chiedo di munirvi di molta pazienza, visti i miei numerosi dubbi

    1)
    Innanzitutto, io ho creato un database mySQL andando su http://127.0.0.1/myadmin3525/ (precedentemente ho fatto tutti i passaggi seguendo una guida), ho creato all'interno la tabella e l'ho esportata in un file chiamato Pizzeria.sql
    Ora, per poterlo utilizzare, mi basta inserirlo nella cartella del progetto, giusto?

    codie Pizzeria.sql
    codice:
    -- phpMyAdmin SQL Dump
    -- version 4.0.1
    -- http://www.phpmyadmin.net
    --
    -- Host: localhost
    -- Generato il: Mag 16, 2013 alle 19:40
    -- Versione del server: 5.6.11
    -- Versione PHP: 5.3.15
    
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    SET time_zone = "+00:00";
    
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    
    --
    -- Database: `Pizzeria`
    --
    
    -- --------------------------------------------------------
    
    --
    -- Struttura della tabella `Prodotti`
    --
    
    CREATE TABLE IF NOT EXISTS `Prodotti` (
      `Codice` char(5) NOT NULL,
      `NomePizza` char(50) NOT NULL,
      `Categoria` char(50) NOT NULL,
      `Ingredienti` char(100) NOT NULL,
      `Prezzo` double NOT NULL,
      PRIMARY KEY (`Codice`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Prodotti della Pizzeria: 01 Pizze; 02 Bevande;';
    
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    2)
    Ora devo utilizzare questo database da un programma java.
    Dopo aver creato la classe, ho utilizzato questo codice per CONNETTERE il programma java al database e per INSERIRE dati al suo interno, ma ho due dubbi:

    codice:
    private void btnSalva(java.awt.event.ActionEvent evt) {
            String categoriaPizza = cbxCategoria.getModel().getSelectedItem().toString();
            String nomePizza = txtNome.getText().toString();
            String ingredientiPizza = txaIngredienti.getText().toString();
            String prezzoPizza = txtPrezzo.getText().toString(); // --- modificare sctringa in float: float prezzoPizza = Float.parseFloat(txtPrezzo.getText().toString());
    
            try {
                Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //si carica il driver
            } catch (ClassNotFoundException exc) {
                System.out.println("ERRORE, Driver jdbc non presente: "+exc.getMessage());
            }
    
            JOptionPane.showMessageDialog(null,"Accesso al database MySQL effettuato!");
            Connection connection = null;
    
            try {
                Connection con = DriverManager.getConnection("jdbc:odbc://10.0.254.232, nomeuser, pass"); 
                con.setAutoCommit(false);
    
                /* con questa istruzione si fa in modo che il commit avvenga solo se esplicitamente invocato dall'utente*/
                con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
    
                Statement dati = con.createStatement();// si crea un oggetto Statement
    
                String insert = "";
                // if(categoriaPizza != "- Scegli categoria -" || nomePizza != ""  || ingredientiPizza != "" || prezzoPizza != "") {
                    insert = "INSERT INTO Prodotti VALUES ('"+categoriaPizza+"', '"+nomePizza+"', '"+ingredientiPizza+ "', '"+ prezzoPizza + "')";
                //} else {
                    //JOptionPane.showMessageDialog(null,"Non hai inserito pizza.");
                //}
    
                Prodotti .executeUpdate(insert);// si esegue l'operazione di insert
                con.commit();// si effettua il commit
                Prodotticlose();// si chiude lo Statement Tabella
                con.setAutoCommit(true);// si ripristina l'autocommit
                con.close();//si chiude la connessione
            } catch (SQLException exc1) {
                System.out.println("Errore nell'inserimento dei dati "+exc1.getMessage());
            }
        }
    - in ROSSO: come devo modificare gli attributi per l'accesso al database? devo utilizzare i dati che utilizzo per accedere a 127.0.0.1/myadmin3525?

    - in BLU: in queste due righe mi dice praticamente di creare la classe Prodotti, ovvero le dovrebbe vedere o non vedere come variabili..probabilmente..

    Qualcuno riesce ad aiutarmi in questi due punti?
    Grazie per la pazienza!

  2. #2
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Ho modificato un pò il codice al punto 2, ed ho inserito il file Pizzeria.sql nella cartella del programma in Java, ora però non capisco come gestire la connessione (riga ROSSA)..

    codice:
    private void btnSalva(java.awt.event.ActionEvent evt) {
            String categoriaPizza = cbxCategoria.getModel().getSelectedItem().toString();
            String nomePizza = txtNome.getText().toString();
            String ingredientiPizza = txaIngredienti.getText().toString();
            String prezzoPizza = txtPrezzo.getText().toString(); // --- modificare sctringa in float: float prezzoPizza = Float.parseFloat(txtPrezzo.getText().toString());
    
            try {
                Class.forName("com.mysql.jdbc.Driver"); //si carica il driver
            } catch (ClassNotFoundException exc) {
                System.out.println("ERRORE, Driver jdbc non presente: "+exc.getMessage());
            }
    
            Connection connection = null;
    
            try {
                Connection con = DriverManager.getConnection("jdbc:odbc://10.0.254.232, nomeuser, pass");
                con.setAutoCommit(false);
    
                JOptionPane.showMessageDialog(null,"Accesso al database MySQL effettuato!");
    
                /* con questa istruzione si fa in modo che il commit avvenga solo se esplicitamente invocato dall'utente*/
                con.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE);
    
                Statement dati = con.createStatement();// si crea un oggetto Statement
    
                // if(categoriaPizza != "- Scegli categoria -" || nomePizza != ""  || ingredientiPizza != "" || prezzoPizza != "") {
                    int insert = dati.executeUpdate("INSERT INTO Prodotti VALUES ('"+categoriaPizza+"', '"+nomePizza+"', '"+ingredientiPizza+ "', '"+ prezzoPizza + "')");
                //} else {
                    //JOptionPane.showMessageDialog(null,"Non hai inserito pizza.");
                //}
    
                con.close();//si chiude la connessione
            } catch (SQLException exc1) {
                System.out.println("Errore nell'inserimento dei dati "+exc1.getMessage());
            }
        }
    Il problema dovrebbe essere che non entra nell'ultimo TRY perchè non mi stampa "Accesso al database effettuato", e quindi non si connette.. ma è strano..

  3. #3
    1) hai messo l'ip, lo username e la password corretti?
    2) togli "obdc:"
    STK/Unit: Unit Test framework per MariaDB
    http://stk.wikidot.com/stk-unit

  4. #4
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    [...]

  5. #5
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Ok, ho eliminato "obdc:", e sistemato la riga ROSSA e quella sopra, mettendo "con" al posto di "connection", in modo che sia ovviamente la stessa variabile.

    Ora io ho una situzione come da immagine, in cui mi ritrovo la cartella Pizzeria (è il progetto di Netbeans in java), la carterra .jar che sono le librerie, e Pizzeria.sql (il database).

    Ora le mie domande sono principalmente due:

    1) è corretto ciò che ho fatto? cioè, il database funziona se lo utilizzo cosi (ovvero all'interno di questa cartella), oppure devo utilizzarlo online?

    2) riguardo la riga ROSSA, e avendo il database in questa cartella (sempre se è giusta, riguardo al punto 1), cosa devo inserire al posto dell'indirizzo ip, nomeuser e pass?

    http://imageshack.us/photo/my-images/708/databasek.png/

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.