Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    120

    Problema Con Connessione Database Mysql

    ciao ho questo problema devo connettermi ad un database mysql con java il codice del file che si occupa delle connessione è questo

    codice:
    package forum;
    
    import java.sql.*;
    import java.util.*;
    
    
    public class Boxes {
    	private int boxid, memberid;
    	private String boxname, sortdesc;
    
    
    	public int getBoxid() {
    		return boxid;
    	}
    
    	public void setBoxid(int boxid) {
    		this.boxid = boxid;
    	}
    
    	public int getMemberid() {
    		return memberid;
    	}
    
    	public void setMemberid(int memberid) {
    		this.memberid = memberid;
    	}
    
    	public String getBoxname() {
    		return boxname;
    	}
    
    	public void setBoxname(String boxname) {
    		this.boxname = boxname;
    	}
    
    	public String getSortdesc() {
    		return sortdesc;
    	}
    
    	public void setSortdesc(String sortdesc) {
    		this.sortdesc = sortdesc;
    	}
    
    	public List getBoxes() {
    		List boxes = new LinkedList();
    		String query = "SELECT box_id FROM Boxes";
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			ResultSet rst = stat.executeQuery(query);
    
    			while(rst.next()) {
    				boxid = rst.getInt("box_id");
    				boxes.add(new Integer(boxid));
    			}
    
    			con.close();
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    		}
    		return boxes;
    	}
    
    	public List getBoxes(int memberid) {
    		List boxes = new LinkedList();
    		String query = "SELECT box_id FROM Boxes WHERE member_id=" + memberid;
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			ResultSet rst = stat.executeQuery(query);
    
    			while(rst.next()) {
    				boxid = rst.getInt("box_id");
    				boxes.add(new Integer(boxid));
    			}
    
    			con.close();
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    		}
    		return boxes;
    	}
    
    	public boolean getBox(int boxid) {
    		String query = "SELECT * FROM Boxes WHERE box_id=" + boxid;
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			ResultSet rst = stat.executeQuery(query);
    
    			while(rst.next()) {
    				this.boxid = rst.getInt("box_id");
    				memberid = rst.getInt("member_id");
    				boxname = rst.getString("box_name");
    				sortdesc = rst.getString("sort_desc");
    			}
    
    			con.close();
    			return true;
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean setBox() {
    		boxid = (int) (1000 + Math.random()* 1000);
    		String query = "INSERT INTO Boxes (box_id, member_id, [box_name], [sort_desc]) " +
    						"VALUES (" + boxid + ", " +
    						+ memberid + ", " +
    						"'" + boxname + "', " +
    						"'" + sortdesc + "')";
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			stat.execute(query);
    			con.close();
    			return true;
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean setBox(int boxid) {
    		String query = "UPDATE Boxes SET box_name='" + boxname + "', " +
    						"sort_desc='" + sortdesc + "' " +
    						"WHERE box_id=" + boxid;
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			stat.execute(query);
    			con.close();
    			return true;
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean delBox(int boxid) {
    		String query1 = "DELETE FROM Boxes WHERE box_id=" + boxid;
    		String query2 = "DELETE FROM Threads WHERE box_id=" + boxid;
    
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    			Statement stat = con.createStatement();
    			stat.execute(query1);
    			stat.execute(query2);
    			con.close();
    			return true;
    		}
    		catch(Exception e) {
    			e.printStackTrace();
    			return false;
    		}
    	}
    
    	public boolean isMod(int memberid) {
    			String query = "SELECT box_id FROM Boxes WHERE member_id=" + memberid;
    
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    				Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    				Statement stat = con.createStatement();
    				ResultSet rst = stat.executeQuery(query);
    				if(rst.next() == true) {
    					con.close();
    					return true;
    				}
    				else {
    					con.close();
    					return false;
    				}
    			}
    			catch(Exception e) {
    				e.printStackTrace();
    				return false;
    			}
    	}
    
    	public boolean assignBox(int boxid, int memberid) {
    			String query = "UPDATE Boxes SET member_id=" + memberid + " " +
    							"WHERE box_id=" + boxid;
    
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    				Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    				Statement stat = con.createStatement();
    				stat.execute(query);
    				con.close();
    				return true;
    			}
    			catch(Exception e) {
    				e.printStackTrace();
    				return false;
    			}
    	}
    
    	public boolean unassignBox(int memberid) {
    				String query = "UPDATE Boxes SET member_id=0 " +
    								"WHERE member_id=" + memberid;
    
    				try {
    					Class.forName("com.mysql.jdbc.Driver");
    					Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    					Statement stat = con.createStatement();
    					stat.execute(query);
    					con.close();
    					return true;
    				}
    				catch(Exception e) {
    					e.printStackTrace();
    					return false;
    				}
    	}
    
    	public List getUnallocBoxes() {
    			List boxes = new LinkedList();
    			String query = "SELECT box_id FROM Boxes WHERE member_id=0";
    
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    				Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true");
    				Statement stat = con.createStatement();
    				ResultSet rst = stat.executeQuery(query);
    
    				while(rst.next()) {
    					boxid = rst.getInt("box_id");
    					boxes.add(new Integer(boxid));
    				}
    
    				con.close();
    			}
    			catch(Exception e) {
    				e.printStackTrace();
    			}
    			return boxes;
    	}
    }
    il problema è che il "forum" si avvia ma nel momento in cui metto user e pass per entrarci mi dice che gli utenti non ci sono o sono invalidi....cioè non si connette al database... avete qualche suggerimento??

    da quel che ho capito ce qualche problema qui credo
    ("jdbc:mysql://localhost:3306/forum?user=root&password=prova&autoReconnect=true" )

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Il regolamento prevede che il linguaggio utilizzato venga specificato nel titolo.
    Inoltre, dato che ho visto che si tratta di Java, fai attenzione alla sezione dove ti trovi: Java viene trattato nel sub-forum apposito.

    Ti sposto e aggiungo il linguaggio al titolo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Qual'è l'eccezione che lancia?
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    120
    in pratica nulla... cioè rimane in attesa per un po e poi qualunque nome utente e pass io metta nella form di accesso mi dice sempre che non esistono ... (nel database ho controllato e ci sono)

    a volte cmq esce un errore 500.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Forse non c'entra nulla, ad ogni modo io eviterei una gestione come la tua in cui, in ogni metodo, viene effettuata la connessione al DB. Prova ad utilizzare una sola connessione al DB: puoi facilmente trasportare l'oggetto Connection a livello di classe ed inizializzarlo una sola volta (nel costruttore?) oppure utilizzando un pool di connessioni (da attivare, magari, tramite un ContextListener all'attivazione del ServletContext e dismesso quando la webapp viene fermata); appena entri nel forum verrà avviata una Servlet che recupera la prima connessione libera dal pool.

    Perchè ti sto dicendo questo? Perchè è molto probabile che se effettui una connessione su ciascun metodo, poi questa connessione rimanga "in piedi", ed il server mysql, dopo un po', non te ne accetta altre.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    120
    si in effetti hai ragione...però rimane la questione che di connessioni non ne avviene manco una

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Hai provato a togliere "autoReconnect=true" dalla stringa di connessione? Io non ho trovato quella specifica nel driver JDBC (può essere che io utilizzi una versione più vecchia, però non si sa mai...).


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.