Tips&Tricks I trucchi del mestiere

 

Come interagire con un database Access

Java realizza le connessioni ai database attraverso il componente noto come JDBC . PoichΘ Java Φ multipiattaforma, tale insieme di API fornisce funzionalitα generiche per l'accesso alle fonti condivise, indipendentemente dal loro formato. Il trucco Φ abbastanza semplice: JDBC fa da "tramite" tra un'applicazione Java ed il DBMS che si intende sfruttare, spesso attraversando anche altri collegamenti interni.
Tip fornito dal sig. C. Pelliccia

Per testare la connessione con gli archivi di Access, realizza un archivio chiamato miodatabase.mdb, e al suo interno crea una tabella nominata Persone, suddivisa in quattro campi: " ID, un banale contatore usato come chiave primaria. " Nome, di tipo testuale. " Cognome, di tipo testuale. " Indirizzo, di tipo testuale. Quindi popola la tabella con qualche dato arbitrario. A questo punto Φ necessario far riconoscere al sistema operativo il database, in modo che possa essere introdotto tra le fonti di dati ODBC gestite. Per far ci≥, Φ necessario configurare un DSN. L'operazione Φ semplice: 1. Dal "pannello di controllo" di Windows accedi alla voce "origine dati ODBC". 2. Seleziona "aggiungi" nella scheda "DSN utente". 3. Scegli, dall'elenco presentato, il driver di Access, identificato solitamente dalla dicitura "Microsoft Access Driver (*.mdb)". 4. Nella maschera ora presentata, immetti i dati necessari per la creazione del DSN. Usa il nome MioDatabase, inserisci una descrizione a piacere, e con il pulsante "seleziona" collega il DSN al file miodatabase.mdb precedentemente creato. 5. Conferm ogni operazione effettuata, salvando cos∞ il DSN utente creato.

Ora la base di dati Φ ufficialmente riconosciuta dal sistema operativo, e JDBC pu≥ accedervi sfruttando, come tramite, il driver ODBC del sistema. In casi come questo, infatti, si parla di ponte JDBC-ODBC.

Le classi Java che permettono l'accesso ai database sono contenute nel package java.sql. Ecco un esempio in grado di sfruttare il database di Access appena registrato nel sistema:

import java.sql.*;
class JavaDatabase {
  public static void main(String[] args) {
    try {
      // Carico il driver JDBC-ODBC
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      // Apro una connessione con il database
      Connection con = DriverManager.getConnection(
        "jdbc:odbc:MioDatabase"
      );
      // Preparo l'oggetto che mi permetterα
      // l'utilizzo di SQL
      Statement stat = con.createStatement();
      // Eseguo l'interrogazione, ottentendo
      // un oggetto ResultSet come risultato
      ResultSet res = stat.executeQuery(
        "SELECT * FROM Persone"
      );
      // Scorro ogni record presente e stampo
      // l'output sul video
      while (res.next()) {
        System.out.println(
          res.getString("Nome") + ", " +
          res.getString("Cognome") + ", " +
          res.getString("Indirizzo")
        );
      }
      // Chiudo il ResultSet
      res.close();
      // Chiudo lo Statement
      stat.close();
      // Chiudo la connessione
      con.close();
    } catch (Exception e) {
      System.out.println("Problema: " + e.toString());
    }
  }
}

Per prima cosa viene caricato il driver JDBC-ODBC:

Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

Quindi la classe Connection Φ sfruttata per aprire la connessione verso il database. La stringa utilizzata, ovviamente, non Φ casuale:

jdbc:odbc:MioDatabase

MioDatabase, infatti, Φ proprio il nome del DSN creato pocanzi. A questo punto Φ superfluo commentare il resto: il package java.sql contiene tutte le funzionalitα necessarie per ogni scopo, e la documentazione ufficiale (http://java.sun.com/docs/) le illustra nel dettaglio.


Downloadare un file dal Web e salvarlo in locale

La procedura proposta consente di scaricare un file partendo dal suo URL e di salvare lo stesso in una directory locale. AffinchΘ il tip possa funzionare Φ necessario importare i package java.net e java.io.

public static void download(String url, String filename) {
	try {
		URL u = new URL(url);
		URLConnection conn = u.openConnection();
		InputStream in = conn.getInputStream();
		FileOutputStream out = new FileOutputStream(filename);
		byte[] bytes = new byte[1024];
		int l = 0;
		while ((l = in.read(bytes)) != -1)
			out.write(bytes,0,l);
		out.close();
		in.close();
	} catch (Exception e) {
		System.out.println("Problema: " + e.toString());
	}
}

La seguente riga di codice:

download("http://www.ioprogrammo.it/hello.zip","hello_ioprogrammo.zip");

recupera il file denominato hello.zip, presente all'URL indicato, e lo salva sul proprio hard-disk con il nome hello_ioprogrammo.zip


Una funzione TRIM evolutaà

Il tip proposto emula la funzione trim di Visual Basic, ovvero rimuovere gli eventuali spazi presenti all'inizio o alla fine di una stringa; utile da utilizzare anche solo lato client, nel browser.
Tip fornito dal sig. C.Miele

<%@ LANGUAGE="JScript"%>
function trim(stringa){

  var i;
  var inizio=-1;
  var fine=stringa.length;

          for(i=0;i<stringa.length;i++){
               if(stringa.charAt(i)==" ")
                    inizio=i;
               else
                    break;
          }

          for(i=stringa.length-1;i>0;i--){
               if(stringa.charAt(i)==" ")
                     fine=i;
               else
                    break;
              }
               stringa = stringa.substring(inizio+1,fine);

                  return(stringa);
}

function ltrim(stringa){

  var i;
  var inizio=-1;

    for(i=0;i<stringa.length;i++){
           if(stringa.charAt(i)==" ")
                inizio=i;
           else
                break;
          }

           stringa = stringa.substring(inizio+1,stringa.length);

          return(stringa);
    }

function rtrim(stringa){

  var i;
  var fine=stringa.length;

  for(i=stringa.length-1;i>0;i--){
   if(stringa.charAt(i)==" ")
     fine=i;
   else
    break;
 }
  stringa = stringa.substring(0,fine);
  return(stringa);
}
%>