View Full Version : [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 :muro:
Qualcuno mi può dare qualche spunto su quali classi costruire e magari quali metodi e variabili dovrebbe avere ciascuna classe? :confused:
Grazie in anticipo :)
pabloski
01-05-2013, 11:04
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.
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?:mc:
pabloski
02-05-2013, 10:36
Conviene una classe sola, perchè dovresti crearne tre?
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.
/**
* 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...
}
}
}
La prima parte la salvi come Dbms.java e la seconda come test.java
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 ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.