View Full Version : [JAVA] Array e Array List con JDBC Driver
supersalam
22-09-2011, 15:40
Ragazzi devo creare un database che contenga gli esami svolti da studenti e che quindi permetta l'inserimento, la modifica, la ricerca, e la cancellazione dei dati.
Il prof mi ha chiesto di inserire gli studenti in un array e gli esami in un array list.
Ma come faccio ad inviare i dati contenuti in un array al driver JDBC?
Credo che il professore voglia un array per evitare che ci si connetta al database ad ogni istruzione.
Il modo più semplice ed intuitivo è quello leggerti i dati dal db e memorizzarli nella tua struttura dati, se effettui delle modifiche ti aggiorni sia la struttura e sia il DB.
Ti consiglio di crearti i tuoi oggetti esami e studenti e di inserirli nelle hashmap: [id][TuoOggetto]
supersalam
27-09-2011, 10:02
Il modo più semplice ed intuitivo è quello leggerti i dati dal db e memorizzarli nella tua struttura dati, se effettui delle modifiche ti aggiorni sia la struttura e sia il DB.
Ti consiglio di crearti i tuoi oggetti esami e studenti e di inserirli nelle hashmap: [id][TuoOggetto]
Ciao Ken, gentilissimo. Avresti qualche tutorial oppure sito che tratta l'argomento? Anche in inglese va benissimo.
Purtroppo questi professori ti dicono quello che devi fare ma non ti dicono come, e il libro non tratta JDBC.
franksisca
27-09-2011, 10:33
Ciao Ken, gentilissimo. Avresti qualche tutorial oppure sito che tratta l'argomento? Anche in inglese va benissimo.
Purtroppo questi professori ti dicono quello che devi fare ma non ti dicono come, e il libro non tratta JDBC.
guarda il tutto è molto semplice ed intuitivo. concordo che i prof non dicono niente, però almeno da me se hai problemi non si fanno problemi ad aiutarti.
hai una minima conoscenza di sql per fare le query di inserimento e modifica dei dati? se usi mysql esiste un driver apposito che si chiama jconnector che ti evita di usare driver odbc.
il tutto puoi semplicemente trovarlo online. la gestione delle liste è ovviametnedel tutto indipendete a ciò.
guarda il tutto è molto semplice ed intuitivo. concordo che i prof non dicono niente, però almeno da me se hai problemi non si fanno problemi ad aiutarti.
hai una minima conoscenza di sql per fare le query di inserimento e modifica dei dati? se usi mysql esiste un driver apposito che si chiama jconnector che ti evita di usare driver odbc.
il tutto puoi semplicemente trovarlo online. la gestione delle liste è ovviametnedel tutto indipendete a ciò.
Concordo pienamente, di tutorial su google ce ne stanno tantissimi
supersalam
28-09-2011, 16:55
Allora, posto tutto il codice che ho fatto così mi aiutate un pochettino :D.
Ho creato con mysql un database di nome esami, con password studente.
il database per ora ha 2 tabelle (e credo non ne servano altre) esami, studenti.
Cosa voglio ottenere?
1: Studenti in java deve essere gestito come un array, e il caricamento sul database deve essere fatto alla fine delle operazioni.
2: Esami devono essere in un arraylist e sono associati allo studente (è fondamentalmente una verbalizzazione).
3: Un comando trova che restituisce alcune query.
4: Un comando elimina.
E basta.
Ecco cosa ho fatto io fino ad ora (è molto spartano quindi non badate al codice buttato li senza essere incapsulato):
Main.java
import java.sql.*;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan =new Scanner(System.in);
int scelta=0;
Statement stat = null;
ResultSet result = null;
PreparedStatement pstat;
Object st, es2, es3 ;
scelta= 0;
while( scelta!=5)
{
System.out.println( "\nSeleziona operazione da effettuare\n");
System.out.println("1: Inserisci Studente");
System.out.println("2: Inserisci Esame");
System.out.println("3: Trova");
System.out.println("4: Modifica Tabelle");
System.out.println("5: Esci");
System.out.println("---> ");
scelta=scan.nextInt();
switch(scelta){
case 1: {
st=new Studenti();
// if (mi inventerò qualcosa) return System.out.println("Operazione effettuata!");
break;}
case 2: {
es2=new Esame();
break;}
//
case 3: { break;}
//
case 4: { break;}
//
default: { System.out.println("Ciao");break; }
}
}
}
}
Studenti.java
import java.sql.*;
import java.util.Scanner;
import java.util.ArrayList;
class Studenti {
private int matricola;
private String nomen, cogno;
ArrayList<Esame> Esami = new ArrayList<Esame> ();
Scanner scan =new Scanner(System.in);
public void InserisciM(){
matricola=scan.nextInt();
}
public void InserisciN(){
nomen=scan.next();
}
public void InserisciC(){
cogno=scan.next();
}
public int stampaM(){return matricola;}
public String stampaN(){return nomen;}
public String stampaC(){return cogno;}
public Studenti( ){
Statement stat = null;
String istruzioneSql, esm;
int numRighe;
boolean flag;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/esami", "root", "studente");
if(!conn.isClosed())
System.out.println("Connessione a MySQL server effettuata con successo.");
stat= conn.createStatement();
System.out.println("\n Inserisci matricola studente: ");
InserisciM();
System.out.println("Inserisci nome studente: ");
InserisciN();
System.out.println("Inserisci cognome studente: ");
InserisciC();
istruzioneSql="INSERT INTO `studenti` (Matricola, Nome, Cognome) VALUES" + "('"+stampaM()+"','" +stampaN()+"','" +stampaC()+"');";
flag=stat.execute(istruzioneSql);
System.out.println("Vuoi Inserire degli esami in questo studente? (S o N): ");
esm=scan.next();
if (esm == "S")
Esami.add(new Esame());
}
catch (Exception ex) {
System.out.println("SQLException: " + ex.getMessage());
}
}
}
Esame.java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;
class Esame {
String Esame, Data;
int Matricola, Voto;
int Lode;
Scanner scan =new Scanner(System.in);
public Esame(){
Statement stat = null;
String istruzioneSql;
String lde;
boolean verifica;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/esami", "root", "studente");
if(!conn.isClosed())
System.out.println("Connessione a MySQL server effettuata con successo.");
stat= conn.createStatement();
System.out.println("\nInserisci matricola studente: ");
Matricola=scan.nextInt();
verifica = controlloM (Matricola);
if (verifica==true) {
System.out.println("Inserisci nome Esame: ");
Esame=scan.next();
System.out.println("Inserisci Voto: ");
Voto=scan.nextInt();
if (Voto==30) {
System.out.println("Lode (S o N): ");
lde=scan.next();
if (lde=="S") Lode=1;
}
System.out.println("Inserisci Data esame (AAAA-MM-GG): ");
Data=scan.next();
istruzioneSql="INSERT INTO `esame` (Matricola, NomeEs, Voto, Data, Lode) VALUES" + "('"+Matricola+"','" +Esame+"','" +Voto+ "','"+Data+"','"+Lode+"');";
stat.execute(istruzioneSql);
} //fine if
else { System.out.println("Hai inserito una matricola che non esiste nel database.");}
}
catch (Exception ex) {
System.out.println("SQLException: " + ex.getMessage());
}
}
public boolean controlloM (int Matricola) {
boolean verifica=false;
Statement stat= null;
String istruzioneSql;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/esami", "root", "studente");
stat= conn.createStatement();
ResultSet result = null;
int count;
istruzioneSql="SELECT * FROM esami.studenti WHERE Matricola ="+ Matricola + ";";
result= stat.executeQuery(istruzioneSql);
result.last();
// count=result.getRow();
if (result.last() == true) verifica=true;
}
catch (Exception ex) {
System.out.println("SQLException: " + ex.getMessage());
}
return (verifica);
}
}
franksisca
28-09-2011, 23:18
lol domani leggo tutto...promesso :D
nuovoUtente86
30-09-2011, 14:39
Francamente non ho capito dove sia il tuo problema se nella gestione delle strutture dati, nella gestione della persistenza, oppure nel collegamento al DBMS.
La questione è abbastanza semplice: hai delle strutture dati in memoria, le scansioni e rendi i dati persistenti. Con l' operazione contraria recuperi i dati persistenti e li dai in pasto al programma.
supersalam
06-10-2011, 17:30
Ragazzi, sono sempre io. Vorrei sapere come si fa a creare un arrayList di tipo Esame e a farlo funzionare.
Ho aggiornato il codice in prima pagina. Il mio dubbio è scritto in rosso.
Grazie a chi mi aiuterà.
franksisca
06-10-2011, 22:34
Ragazzi, sono sempre io. Vorrei sapere come si fa a creare un arrayList di tipo Esame e a farlo funzionare.
Ho aggiornato il codice in prima pagina. Il mio dubbio è scritto in rosso.
Grazie a chi mi aiuterà.
hai usato i Generics??
in spiccioli
ArrayList <Esame> esami= new ArrayList<Esame>();
Esame ex=new Esame(....);
esami.add(ex);
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.