Qual è il modo / modello migliore per impostare la connessione mysql e jdbc?

StackOverflow https://stackoverflow.com/questions/819845

  •  03-07-2019
  •  | 
  •  

Domanda

Qual è il modo migliore per impostare una connessione con jdbc di mysql? Ed esegui una semplice dichiarazione. Come farlo? Grazie.

È stato utile?

Soluzione

La piastra di base per MySQL / JDBC è simile a questa:

Ottieni la connessione :

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://databaseName");

Esegui la dichiarazione :

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * from tableName");
while (rs.next()) {
    System.out.println(rs.getString(1));
}

Chiudi l'istruzione e la connessione :

rs.close();
stmt.close();
conn.close();

Devi solo assicurarti di avere il driver installato e / o nel tuo CLASSPATH.

Altri suggerimenti

Questo è il ventunesimo secolo: usa un'implementazione JPA (ORM). Ma se insisti per tornare al metal (a rischio di voti negativi) -

Esistono molti modi per ottenere una connessione JDBC da alcuni driver. L'uso della riflessione con un nome di classe cablato è il più comune e forse il più danneggiato dal cervello. Se hai intenzione di cablare un nome di classe, potresti anche ottenere i vantaggi del codice normale (il compilatore rileva errori di battitura, senza eccezioni estranee da gestire, più facile da leggere, dipendenze esplicite, migliore supporto degli strumenti, ecc.).

Prendi anche l'abitudine di ripulire le risorse in sicurezza.

public static void main(String[] args) throws SQLException {
     Driver driver = new com.mysql.jdbc.Driver();
     Connection connection = driver.connect(
         "jdbc:mysql://mydatabase", 
         new java.util.Properties() {{
              put("user", "fred");
         }}
     );
     try {
         PreparedStatement statement = connection.prepareStatement(
             "SELECT insideLeg FROM user WHERE name=?"
         );
         try {
             statement.setString(1, "jim");
             ResultSet results = statement.executeQuery();
             try {
                 if (results.next() {
                     System.out.println("= "+results.getLong(1));
                 } else {
                     System.out.println("Missing.");
                 } 
             } finally {
                 results.close();
             }
         } finally {
             statement.close();
         }
     } finally {
         connection.close();
     }
}

Che casino! E non usa nemmeno le transazioni ancora. Sì, usa un ORM. Sono molto rispettabili in questi giorni.

Non dovrai fare tutto questo per ogni singola istruzione. Non vuoi andare in giro a creare driver di istanza ogni volta. In particolare è utile eseguire idioma in giro.

Dipende dal tuo caso.

Se devi semplicemente eseguire alcune query dall'applicazione standalone, allora dovresti usare una singola connessione come:

Class.forName ("yourDriverName");

Connection cn = DriverManager.getConnection ("db url");
Statement st = cn.createStatement ();
ResultSet rs = st.executeQuery ("select * from foo");
while (rs.next()) {
  doSmth ();
} 
rs.close ();
st.close ();
cn.close ();

Ma se stai sviluppando un'applicazione reale (specialmente un'applicazione web), usa DataSource. Leggere il manuale del DB e del server Web su come configurare l'origine dati. DataSource ti consente di utilizzare il pool di connessioni: sarà necessario aumentare le prestazioni.

La configurazione di DataSource non è un processo difficile.

Ecco la documentazione di Sun per creare una connessione JDBC . Da lì è facile ottenere accedere a un oggetto Statement ed eseguire alcuni semplici SQL.

Per i sistemi a livello di produzione probabilmente vorrai anche creare un pool di connessioni .

Utilizza il framework di astrazione JDBC di Spring Framework: tutto ciò che devi fare è creare un file XML di contesto e utilizzare la classe modello JDBC. Bastano poche righe di codice XML + Java per iniziare. Il vantaggio è mantenere i dettagli della connessione fuori da Java compilato. Vedere: http://www.springbyexample.org/examples/simple-spring- JDBC-template.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top