|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Oct 2012
Messaggi: 4
|
[Java] Primo mini-programma
Salve a tutti dopo tanta teoria sono alle prese con la creazione del mio primo programmino e purtroppo il passaggio dalla teoria alla pratica non è proprio semplice.
In pratica vorrei costruire un piccolo programmino che permetta di creare un rubrica. Ho già creato un semplicissimo database Persona con i campi nome, cognome, indirizzo, eta. Ora dovrei creare le classi java per inserire, modificare e visualizzare i dati di questo database, ma mi sto già perdendo ![]() Qualcuno mi può dare qualche spunto su quali classi costruire e magari quali metodi e variabili dovrebbe avere ciascuna classe? ![]() Grazie in anticipo ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Beh, la cosa migliore è replicare la struttura del DB, cioè una classe Persona che ha come attributi gli stessi attributi dell'entità Persona del DB.
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Oct 2012
Messaggi: 4
|
Si creo la classe Persona però il mio dubbio è la connessione al database, mi conviene creare una nuova classe con i metodi per la connessione, modifica e visualizzazione dei dati o forse è meglio creare tre classi differenti una che gestisce l'inserimento dato, l'altra che gestisce la modifica e l'altra che ne gestisce la stampa a video?
![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 8406
|
Conviene una classe sola, perchè dovresti crearne tre?
|
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Mar 2013
Città: Frascati
Messaggi: 31
|
Essendo il tuo primo programma in java, ti sconsiglio vivamente di cimentarti nella connessione al database (se intendevi connetterti ad un dbms tipo access o mysql), ti consiglio di capire bene il funzionamento delle classi e programmazione OOP.
Comunque se vuoi imparare l'interfaccia con il database, ti posto il codice di una classe per la connessione. Codice:
/** * DBMS Class 1.0 * @author Matteo Badoni * */ import java.sql.*; import javax.swing.JOptionPane; public class Dbms { // Attributi della classe, per la connessione al database Connection db; String dbhost = ""; // Indirizzo del database, di solito è localhost String dbuser = ""; // Username dell'utente del database String dbpassword = ""; // Password String dbname = ""; // Nome del database a cui connettersi // Costruttore public Dbms(String host, String user, String password, String name) { this.dbhost = host; this.dbuser = user; this.dbpassword = password; this.dbname = name; } protected boolean connect() // Metodo che permette di connettersi al database { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); // Carica il driver per la connessione this.db = DriverManager.getConnection("jdbc:mysql://" + this.dbhost + "/" + this.dbname, this.dbuser, this.dbpassword); // Si connette al DB return true; }catch(Exception ex) { JOptionPane.showMessageDialog(null, "Errore: "+ex); return false; } } // Questo Metodo serve in caso si debba solo Proiettare o Selezionare dati, cioè una query SELECT public ResultSet execQuery(String sql) { try { if(this.connect()) { Statement st = (Statement) this.db.createStatement(); st.executeQuery(sql); ResultSet rs = st.getResultSet (); return rs; } else return null; } catch(Exception ex) { JOptionPane.showMessageDialog(null, "Errore: "+ex); return null; } } // Questo metodo, serve per eseguire tutte le query di manipolazione dati, INSERT DELETE ecc... public ResultSet execUpdate(String sql) { try { if(this.connect()) { Statement st = (Statement) this.db.createStatement(); st.executeUpdate(sql); ResultSet rs = st.getResultSet (); return rs; } else return null; } catch(Exception ex) { JOptionPane.showMessageDialog(null, "Errore: "+ex); return null; } } } // Classe di Test import java.sql.*; public class test { /** * @param args * @throws SQLException */ public static void main(String[] args) throws SQLException { Dbms db = new Dbms("localhost", "root", "", "test"); // Creo un oggetto di classe Dbms ResultSet rt = db.execQuery("SELECT * FROM nome_tabella"); while(rt.next()) { System.out.println(rt.getString("campo1")); System.out.println(rt.getString("campo2")); // ecc... } } } Questa classe funziona per mysql, modificando il driver di connessione e la stringa di connessione, può funzionare per qualsiasi DBMS. Comunque nel caso non ti serva il database, una sola classe basta e avanza ![]()
__________________
Cpu: Amd FX 8350 - MOBO: Asrock 970 extreme3 (1.70) - Ram: Corsair DDR3 1600 4gb - Vga: Amd HD4890 1gb Ultima Versione - HDD: Western Digital Caviar Blue 1TB Sata3 + Seagate 360GB Sata2 - S.O: Windows 8 PRO 64bit |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:35.