|
|||||||
|
|
|
![]() |
|
|
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: 01:51.



















