Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Diablo II Resurrected: il nuovo DLC Reign of the Warlock
Abbiamo provato per voi il nuovo DLC lanciato a sorpresa da Blizzard per Diablo II: Resurrected e quella che segue è una disamina dei nuovi contenuti che abbiamo avuto modo di sperimentare nel corso delle nostre sessioni di gioco, con particolare riguardo per la nuova classe dello Stregone
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup
Siamo tornati nel parco tecnologico di Trieste per il kick-off del programma che mette a disposizione di cinque startup le infrastrutture di ricerca, dal sincrotrone Elettra ai laboratori di genomica e HPC. Roberto Pillon racconta il modello e la visione
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo
HP OMEN MAX 16-ak0001nl combina RTX 5080 Laptop e Ryzen AI 9 HX 375 in un desktop replacement potente e ben raffreddato, con display 240 Hz e dotazione completa. Autonomia limitata e calibrazione non perfetta frenano l'entusiasmo, ma a 2.609 euro è tra le proposte più interessanti della categoria.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-09-2011, 16:40   #1
supersalam
Senior Member
 
L'Avatar di supersalam
 
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*
supersalam è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2011, 00:29   #2
Ken1986
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]
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2011, 11:02   #3
supersalam
Senior Member
 
L'Avatar di supersalam
 
Iscritto dal: Jun 2003
Città: Monopoli
Messaggi: 2789
Quote:
Originariamente inviato da Ken1986 Guarda i messaggi
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.
__________________
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*
supersalam è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2011, 11:33   #4
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da supersalam Guarda i messaggi
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ò.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2011, 12:20   #5
Ken1986
Member
 
Iscritto dal: Nov 2007
Messaggi: 122
Quote:
Originariamente inviato da franksisca Guarda i messaggi
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
Ken1986 è offline   Rispondi citando il messaggio o parte di esso
Old 28-09-2011, 17:55   #6
supersalam
Senior Member
 
L'Avatar di supersalam
 
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());
	      }
	      
	    }
}
Esame.java

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.
supersalam è offline   Rispondi citando il messaggio o parte di esso
Old 29-09-2011, 00:18   #7
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
lol domani leggo tutto...promesso
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 30-09-2011, 15:39   #8
nuovoUtente86
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.
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2011, 18:30   #9
supersalam
Senior Member
 
L'Avatar di supersalam
 
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.
supersalam è offline   Rispondi citando il messaggio o parte di esso
Old 06-10-2011, 23:34   #10
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da supersalam Guarda i messaggi
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);
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Diablo II Resurrected: il nuovo DLC Reign of the Warlock Diablo II Resurrected: il nuovo DLC Reign of the...
Deep Tech Revolution: così Area Science Park apre i laboratori alle startup Deep Tech Revolution: così Area Science P...
HP OMEN MAX 16 con RTX 5080: potenza da desktop replacement a prezzo competitivo HP OMEN MAX 16 con RTX 5080: potenza da desktop ...
Recensione Google Pixel 10a, si migliora poco ma è sempre un'ottima scelta Recensione Google Pixel 10a, si migliora poco ma...
6G, da rete che trasporta dati a rete intelligente: Qualcomm accelera al MWC 2026 6G, da rete che trasporta dati a rete intelligen...
La missione Artemis II con il razzo spaz...
Blue Origin propone di utilizzare Blue R...
Sora all'interno di ChatGPT: aumentano g...
L'Ufficio dell'Ispettore Generale ha ana...
Primo contatto con Volvo ES90: ammiragli...
La Cina potrebbe puntare con maggiore de...
Un clamoroso errore strategico: il nuovo...
Cos’è il nuovo cartello del "...
HP: gli attacchi con l'IA puntano su vel...
Acer compie 50 anni e si trasforma: dall...
La rete elettrica USA funziona solo a me...
La Corte Costituzionale albanese: 'Il ba...
Secondo trailer del nuovo anime di Ken i...
La guerra tra Russia e Ucraina arriva co...
KadNap: il botnet che ha infettato 14.00...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 01:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v