Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Zama
    Registrato dal
    Apr 2007
    Messaggi
    14

    [JAVA] Connessione DB Microsoft Access

    Ciao,
    sto elaborando la mia prima applicazione per sviluppare una piccola mailing list. il problema è che se lancio l'applicazione da Eclipse mi funziona correttamente,mentre se la racchiudo in una pagina HTML, si comporta in modo anomalo.

    Funziona tutto tranne che non salva il nick e l'email nel file "mail.mdb".

    Ecco il codice java:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.sql.*;

    public class SubscribeForm extends JApplet implements ActionListener{

    private String nick;
    private String eMail;
    private JLabel messageLabel;
    private JTextField nickField;
    private JTextField eMailField;

    public static void sendToDB(String nick, String eMailAddress){
    String DBPath = "db/mail.mdb"; // cambia DBPath per settare l'indirizzo del file *.mdb
    String database = null;
    try{
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    database = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=" + DBPath.trim();
    Connection con = DriverManager.getConnection(database);
    Statement stmt = con.createStatement();
    stmt.execute("INSERT INTO Indirizzi VALUES('" + nick + "','" + eMailAddress + "')");
    stmt.close();
    con.close();
    }
    catch (ClassNotFoundException ex1){
    System.out.println("Error: " + ex1.getMessage());
    }
    catch(SQLException ex2){
    System.out.println("Error: " + ex2.getMessage());
    }
    }
    public void init(){
    Container contentPane = getContentPane();
    contentPane.setBackground(Color.WHITE);
    contentPane.setLayout(new BorderLayout());

    // Inizializzo il pannello messaggio e lo riempio con una label
    JPanel messagePanel = new JPanel();
    messagePanel.setBackground(Color.WHITE);
    messageLabel = new JLabel();
    messageLabel.setText("Subscribe our newsletter"); // testo di benvenuto
    messagePanel.add(messageLabel);

    //Inizializzo il pannello principale con gli input del nuck e e-mail
    JPanel mainPanel = new JPanel();
    mainPanel.setBackground(Color.WHITE);
    mainPanel.setLayout(new FlowLayout());
    JLabel nickLabel = new JLabel("Nick: ");
    nickField = new JTextField(20);
    JLabel eMailLabel = new JLabel("eMail:");
    eMailField = new JTextField(20);
    mainPanel.add(nickLabel);
    mainPanel.add(nickField);
    mainPanel.add(eMailLabel);
    mainPanel.add(eMailField);

    // Inizializzo il pannello pulsanti
    JPanel buttonPanel = new JPanel();
    buttonPanel.setBackground(Color.WHITE);
    JButton subscribe = new JButton("Subscribe");
    subscribe.addActionListener(this);
    buttonPanel.add(subscribe);

    // aggiungo i vari pannelli al contentPane
    contentPane.add(messagePanel, BorderLayout.NORTH);
    contentPane.add(mainPanel, BorderLayout.CENTER);
    contentPane.add(buttonPanel, BorderLayout.SOUTH);
    }

    public void actionPerformed(ActionEvent e){
    String actionCommand = e.getActionCommand();
    if (actionCommand.equals("Subscribe")){
    if (nickField.getText().equals("")){
    nickField.setBackground(Color.YELLOW);
    eMailField.setBackground(Color.WHITE);
    messageLabel.setText("You have to enter a valid nick");
    messageLabel.setForeground(Color.RED);
    }else if(eMailField.getText().equals("")){
    eMailField.setBackground(Color.YELLOW);
    nickField.setBackground(Color.WHITE);
    messageLabel.setText("You have to enter a valid e-mail address");
    messageLabel.setForeground(Color.RED);
    }else{
    nick = nickField.getText();
    eMail = eMailField.getText();
    sendToDB(nick, eMail);
    messageLabel.setText("Thank you for subscribing our news letter");
    messageLabel.setForeground(Color.BLACK);
    nickField.setText("");
    nickField.setBackground(Color.WHITE);
    eMailField.setText("");
    eMailField.setBackground(Color.WHITE);
    }
    }
    else{
    System.out.println("Unaxpected Error Occured");
    messageLabel.setText("Unaxpected Error Occured");
    messageLabel.setForeground(Color.RED);
    }
    }
    }


    nella pagina HTML:
    "<applet code="SubscribeForm.class" codebase="../../../Java/MailingList/" width="300" height="150">
    </applet>"


    Mi potete aiutare? c'è qualche accorgimento da prendere nel codice Java o HTML?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Credo sia dovuto alle restrizioni delle applet. Mi pare che le applet, tranne quando sono caricate in locale (caso di eclipse), non possano stabilire certe connessioni di rete. Probabilmente la connesione che fai verso il db rientra tra queste.

  3. #3
    Utente di HTML.it L'avatar di Zama
    Registrato dal
    Apr 2007
    Messaggi
    14
    Immaginavo, visto che dopo avere postato il mio problema, ho dato un' occhiata in giro per il forum. Per caso sai se queste restrizioni si impostano sul codice java, sul db, oppure dal browser? A intuito penso nel codice, ma non saprei come...
    Proverò a guardare sul sito della sun. se hai info e hai voglia di postare un aiutino.

    Thx!!!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2007
    Messaggi
    95
    io ho avuto un problema simile al tuo in cui la mia applet doveva leggere un file...io l'ho risulto firmando l'applet ...è una operazione molto semplice eseguita da dos:

    1)crea il file jar cn tutto il necessario x l'applet
    2)spostati nella cn il file jar mediante il comando "cd cartella"
    3)digita "C:\Programmi\Java\jdk1.6.0_01\bin\keytool -genkey -alias firmaApplet -keystore Store.store" e compila il tutti i dati necessari e dopo ke ti ha chiesto conferma premi INVIO
    4)C:\Programmi\Java\jdk1.6.0_01\bin\jarsigner -keystore Store.store -signedjar NuovoJarFirmato.jar VecchioJar.jar firmaApplet
    5) nel codice html metti:
    <applet
    code: "Test.class"
    archive: "NuovoJarFirmato.jar"
    <altri parametri>
    ></applet>

  5. #5
    Utente di HTML.it L'avatar di Zama
    Registrato dal
    Apr 2007
    Messaggi
    14
    Ok, grazie mille. Finalmente ho risolto

    Mi si è aggiunto un problema però:
    Ho implementato anche la possibilità di inviare, a chi ha appena sottoscritto la mia maling list, un messaggio e-mail di benvenuto. Ho usato l'API javamail. Il problema è che quando testo l'applet sotto eclipse finziona alla grande(ho importato i file jar dell'API come librerie esterne), mentre quando vado a compilarla su prompt comandi o la importo in un file html, non mi trova le classi dell'API javamail(mi da errore su ogni linea di codice che richiama le classi javamail).

    Ho anche settato le variabili di ambiente, ma nulla.

    Può essere che fuori da eclipse queste classi importate non vengano viste? In questo caso cosa devo fare perchè la mia applet giri correttamente? Non sono riuscito a trovare altro su web che il settaggio delle varibili di ambiente.

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    L'applet gira lato client, le librerie rimangono lato server e non possono comunicare. Mi pare vada indicato il parametro archive="jarAggiuntivo.jar" nel tag applet per dire al client di scaricare e utilizzare questa libreria.

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.