|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
|
[JAVA] Array e Array List con JDBC Driver
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.
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G + Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 - *STEAM* |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
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] |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
|
Quote:
Purtroppo questi professori ti dicono quello che devi fare ma non ti dicono come, e il libro non tratta JDBC.
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G + Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 - *STEAM* |
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
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ò.
__________________
My gaming placement |
|
|
|
|
|
|
#5 | |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
|
Allora, posto tutto il codice che ho fatto così mi aiutate un pochettino
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 Codice:
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 Codice:
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());
}
}
}
Codice:
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);
}
}
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G + Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 - *STEAM* Ultima modifica di supersalam : 06-10-2011 alle 18:35. |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
lol domani leggo tutto...promesso
__________________
My gaming placement |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 7863
|
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. |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
|
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à.
__________________
CASE: Antec P182 - ALI: Corsair CX650M - CPU: AMD Ryzen 5 PRO 4650G + Cooler Master Hyper 212X - MB: ASUS PRIME A520M-K -RAM: G.SKILL Aegis 3200MHz 16GB - SSD: SanDisk Plus SSD 240GB - SA: Asus Xonar Essence STX - MOUSE: Logitech G9 - CUFFIE: Sennheiser HD 595 - *STEAM* Ultima modifica di supersalam : 06-10-2011 alle 18:35. |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
in spiccioli ArrayList <Esame> esami= new ArrayList<Esame>(); Esame ex=new Esame(....); esami.add(ex);
__________________
My gaming placement |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:19.




















