Torna indietro   Hardware Upgrade Forum > Software > Programmazione

iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre
Apple ha rinnovato iPhone 18 Pro soprattutto dentro: chip A20 Pro a 2 nm con memoria affiancata al SoC, camera di vapore tre volte più ampia, Dynamic Island più piccola del 25% grazie a Face ID sotto il display e fotocamera principale con diaframma variabile da f/1.48 a f/4. Lo abbiamo misurato al colorimetro e nei benchmark, usato con iOS 27 e messo alla prova in fotografia tra laghi, borghi e interni poco illuminati
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-12-2009, 18:00   #1
postgres
Member
 
Iscritto dal: Apr 2008
Messaggi: 120
[JAVA] codice per collegarsi a MySQL

Ciao tutti.
Qualcuno sa qual'è il codice per collegarsi correttamente a un DB MySQL con JAVA e la JDBC???

Io ho visto 3 esempi ma non ne funziona nessuno per un motivo o per un altro!

primo pezzo che non funziona in esecuzione:
Codice:
  import java.sql.*;

   public class JDBCApp {
     public static void main (String args[]) {
       try {
 // Carichiamo un driver di tipo 1 (bridge jdbc-odbc)
         String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
         Class.forName(driver);
 // Creiamo la stringa di connessione
         String url = "jdbc:odbc:myDataSource";
 // Otteniamo una connessione con username e password
        Connection con =
        DriverManager.getConnection (url, "", "");
 // Creiamo un oggetto Statement per poter interrogare il db
        Statement cmd = con.createStatement ();
 // Eseguiamo una query e immagazziniamone i risultati
// in un oggetto ResultSet
        String qry = "SELECT * FROM user";
        ResultSet res = cmd.executeQuery(qry);
 // Stampiamone i risultati riga per riga
        while (res.next()) {
        System.out.println(res.getString("columnName1"));
        System.out.println(res.getString("columnName2"));
     }
      res.close();
     cmd.close();
      con.close();
    } catch (SQLException e) {
         e.printStackTrace();
    } catch (ClassNotFoundException e) {
         e.printStackTrace();
       }
    }
  }
con relativo errore in esecuzione:

java.lang.ClassNotFoundException: sun.jdbc.odbc.JdbcOdbcDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at JDBCApp.main(JDBCApp.java:8)










secondo pezzo trovato che non funziona:
Codice:
import java.sql.*;
import java.util.Vector;

public class Database {
   private String nomeDB;       // Nome del Database a cui connettersi
   private String nomeUtente;   // Nome utente utilizzato per la connessione al Database
   private String pwdUtente;    // Password usata per la connessione al Database
   private String errore;       // Raccoglie informazioni riguardo l'ultima eccezione sollevata
   private Connection db;       // La connessione col Database
   private boolean connesso;    // Flag che indica se la connessione è attiva o meno

   public Database(String ....) { this(...., "", ""); }

   public Database(String ...., String ...., String ....) {
      this.nomeDB = ;
      this.nomeUtente = ;
      this.pwdUtente = ;
      connesso = false;
      errore = "";
   }

   // Apre la connessione con il Database
   public boolean connetti() {
      connesso = false;
      try {

         // Carico il driver JDBC per la connessione con il database MySQL
         Class.forName("com.mysql.jdbc.Driver");

         // Controllo che il nome del Database non sia nulla
         if (!nomeDB.equals("")) {

            // Controllo se il nome utente va usato o meno per la connessione
            if (nomeUtente.equals("")) {

               // La connessione non richiede nome utente e password
               db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB);
            } else {

               // La connessione richiede nome utente, controllo se necessita anche della password
               if (pwdUtente.equals("")) {

                  // La connessione non necessita di password
                  db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente);
               } else {

                  // La connessione necessita della password
                  db = DriverManager.getConnection("jdbc:mysql://localhost/" + nomeDB + "?user=" + nomeUtente + "&password=" + pwdUtente);
               }
            }

            // La connessione è avvenuta con successo
            connesso = true;
         } else {
            System.out.println("Manca il nome del database!!");
            System.out.println("Scrivere il nome del database da utilizzare all'interno del file \"config.xml\"");
            System.exit(0);
         }
      } catch (Exception e) { errore = e.getMessage(); }
      return connesso;
   }

   // Esegue una query di selezione dati sul Database
   // query: una stringa che rappresenta un'istruzione SQL di tipo SELECT da eseguire
   // colonne: il numero di colonne di cui sarà composta la tupla del risultato
   // ritorna un Vector contenente tutte le tuple del risultato
   public Vector eseguiQuery(String query) {
      Vector v = null;
      String [] record;
      int colonne = 0;
      try {
         Statement stmt = db.createStatement();     // Creo lo Statement per l'esecuzione della query
         ResultSet rs = stmt.executeQuery(query);   // Ottengo il ResultSet dell'esecuzione della query
         v = new Vector();
         ResultSetMetaData rsmd = rs.getMetaData();
         colonne = rsmd.getColumnCount();

         while(rs.next()) {   // Creo il vettore risultato scorrendo tutto il ResultSet
            record = new String[colonne];
            for (int i=0; i<colonne; i++) record[i] = rs.getString(i+1);
            v.add( (String[]) record.clone() );
         }
         rs.close();     // Chiudo il ResultSet
         stmt.close();   // Chiudo lo Statement
      } catch (Exception e) { e.printStackTrace(); errore = e.getMessage(); }

      return v;
   }

   // Esegue una query di aggiornamento sul Database
   // query: una stringa che rappresenta un'istuzione SQL di tipo UPDATE da eseguire
   // ritorna TRUE se l'esecuzione è adata a buon fine, FALSE se c'è stata un'eccezione
   public boolean eseguiAggiornamento(String query) {
      int numero = 0;
      boolean risultato = false;
      try {
         Statement stmt = db.createStatement();
         numero = stmt.executeUpdate(query);
         risultato = true;
         stmt.close();
      } catch (Exception e) {
         e.printStackTrace();
         errore = e.getMessage();
         risultato = false;
      }
      return risultato;
   }

   // Chiude la connessione con il Database
   public void disconnetti() {
      try {
         db.close();
         connesso = false;
      } catch (Exception e) { e.printStackTrace(); }
   }

   public boolean isConnesso() { return connesso; }   // Ritorna TRUE se la connessione con il Database è attiva
   public String getErrore() { return errore; }       // Ritorna il messaggio d'errore dell'ultima eccezione sollevata
}
e relativo errore in esecuzione:

Exception in thread "main" java.lang.NoClassDefFoundError: Database
Caused by: java.lang.ClassNotFoundException: Database
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:319)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:264)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:332)
Could not find the main class: Database. Program will exit.



Infine qui http://www.soulbit.org/blog/come-con...atabase-e-jdbc
ho trovato un aiuto ma il codice che c'è li da errori pure in compilazione!!!

Ma possibile che sia così complicato?

Io uso Ubuntu 9.10 e i file java li compilo ed eseguo da terminale.

Se potete aiutarmi ve ne sarò grato!

Ultima modifica di postgres : 27-12-2009 alle 18:55.
postgres è offline   Rispondi citando il messaggio o parte di esso
Old 27-12-2009, 21:46   #2
Allure
Senior Member
 
L'Avatar di Allure
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 1242
Per prima cosa: hai installato i driver JDBC per mysql? E nel secondo esempio che hai linkato, dove è il main?

Il driver per mysql lo puoi trovare qui: http://dev.mysql.com/downloads/connector/j/ e le stringhe di connessione vanno configurate così:

String driver = "com.mysql.jdbc.Driver";
Class.forName(driver);
String url = "jdbc:mysql://localhost:3306/";
Connection con = DriverManager.getConnection (url, "root","");


Nella stringa url puoi anche aggiungere direttamente il nome dal database che vuoi utilizzare alla fine!
__________________
Concertina: "I know the truth is in between the 1st and 40th drink"

Ultima modifica di Allure : 27-12-2009 alle 21:54.
Allure è offline   Rispondi citando il messaggio o parte di esso
Old 07-01-2010, 01:24   #3
postgres
Member
 
Iscritto dal: Apr 2008
Messaggi: 120
Si effettivamente mi mancava quello che dicevi tu!
MA ancora non funziona!

Nessuno dei due!

il primo mi da una sconfinata serie di avvisi/errore
di cui il primo è:

com.mysql.jdbc.exceptions.jdbc4.communicationsexception. communiactions link failure

the last packet sent succesfully to the server was 0 milliseconds ago.
the driver has not received any packets from the server.
e poi una serie di avvisi


il secondo invece mi da un semplice: access denied for user @'localhost' (using password yes)

ovviamente tutti i dati sono giusti visto che con php accedo alla base di dati!
postgres è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


iPhone 18 Pro: la recensione del miglior iPhone compatto di sempre iPhone 18 Pro: la recensione del miglior iPhone ...
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Cloudflare rilascerà certificati ...
Offerte Prime anticipate: portatile con ...
Da 110 anni a 19 secondi: IBM Nighthawk ...
Europol accusa un sedicenne di essere il...
Meno frammentazione, più controll...
OpenAI licenzia tre dipendenti del team ...
Sembravano escluse da Windows 11 26H2: q...
Deep Tech Revolution: dall'idrogeno al c...
Figure ha fatto saltare i suoi robot uma...
Windows 11 26H2: Microsoft attiva di def...
Diesel, Trump stringe l'Europa all'angol...
Ninja Double Stack XL a 179,99€: la frig...
Ma i PC portatili con Snapdragon X si ve...
Yann LeCun contro il CEO di Anthropic Da...
Apple starebbe sviluppando una videocame...
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: 12:22.


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