Le tabelle in html
Obiettivo
In questo articolo tratteremo come gestire le tabelle con html.
Articolo
Le tabelle in html servono per presentare i dati in modo ordinato tramite diciamo una griglia. Alcuni usano le
tabelle per creare dei layout per i propri siti.
Il tag che server per creare una tabella ,e’ il tag <TABLE>
Primo esempio
<TABLE>
<TR>
<TD>colonna 1</TD>
<TD>colonna 2</TD>
<TD>colonna 3</TD>
</TR>
<TR>
<TD>colonna 4</TD>
<TD>colonna 5</TD>
<TD>colonna 6</TD>
</TR>
</TABLE>
In questo piccolo esempio abbiamo creato una tabella con due righe e 3 colonne. Per creare una nuova riga, dobbiamo utilizzare
il tag <TR> mentre per creare una colonna dobbiamo usare il tag <TD>.
E’ possibile personalizzare la tabella impostando la larghezza dei bordi , la larghezza e l’altezza oppure la distanza tra le celle.Gli attributi da usare sono:
BORDER specifica la larghezza in pixel dei bordi
CELLSPACING specifica la larghezza in pixel dello spazio tra le celle
CELLPADDING specifica la larghezza in pixel dello spazio interno alle celle
WIDTH specifica la larghezza in pixel o in percentuale della tabella
HEIGHT specifica l’altezza in pixel o in percentuale della tabella
<TABLE BORDER=”1″ CELLSPACING=”2″ CELLPADDING=”5″ WIDTH=”100%” HEIGHT=”25%”>
<TR>
<TD>colonna 1</TD>
<TD>colonna 2</TD>
<TD>colonna 3</TD>
</TR>
</TABLE>
Posizionamento
Per posizionare il testo contenuto nelle celle della tabella, possiamo utilizzare un posizionamento orizzontale e uno verticale.
Nel primo caso utilizziamo l’attributo ALIGN che puo’ essere LEFT, RIGHT o CENTER.
Nel secondo caso utilizziamo l’attributo VALIGN che puo’ essere LEFT, RIGHT o CENTER.
<TABLE BORDER=”1″ CELLSPACING=”2″ CELLPADDING=”5″ WIDTH=”100%” HEIGHT=”25%”>
<TR>
<TD VALIGN=”LEFT”>colonna 1</TD>
<TD>colonna 2</TD>
<TD>colonna 3</TD>
</TR>
</TABLE>
Colori e sfondi
Possiamo modificare il colore di sfondo di una cella tramite l’attributo BGCOLOR.
Se vogliamo modificare il colore di una singola cella, mettiamo questo attributo nella cella corrispondente
<TABLE BORDER=”1″ CELLSPACING=”2″ CELLPADDING=”5″ WIDTH=”100%” HEIGHT=”25%”>
<TR>
<TD BGCOLOR=”#cecece”>colonna 1</TD>
<TD>colonna 2</TD>
<TD>colonna 3</TD>
</TR>
</TABLE>
Se vogliamo modificare il colore di una intera riga, mettiamo questo attributo nella riga corrispondente
<TABLE BORDER=”1″ CELLSPACING=”2″ CELLPADDING=”5″ WIDTH=”100%” HEIGHT=”25%”>
<TR BGCOLOR=”#cecece”>
<TD>colonna 1</TD>
<TD>colonna 2</TD>
<TD>colonna 3</TD>
</TR>
</TABLE>
Manipolare i testi in html
Obiettivo
In questo articolo vedremo come manipolare i testi con html.
Posizionare e formattare un testo
A seguire una serie di tag per formattattare un testo
<BLOCKQUOTE>…</BLOCKQUOTE> Fa rientrare un testo.
<B>…</B> Mette il testo in grassetto
<I>…</I> Mette il testo in corsivo.
<U>…</U> Sottolinea il testo.
<BR> Manda a capo il testo.
<P>…</P> Incomincia un novo paragrafo.
<CODE>…</CODE> Formatta il testo come se si trattasse di codice di programmazione
<STRONG>…<</STRONG>Mette il testo in grassetto
esempio:
<BLOCKQUOTE>Iniziamo a scrivere un testo qualsiasi</BLOCKQUOTE>
<B>che sia in grassetto</B>
<I>che sia in corsivo</I>
<U>che sia sottolineato</U>
<BR>
<P>tanto quello che scriviamo e’ solo un esempio</P>
<CODE>possiamo scrivere del codice</CODE>

Titoli (Headings)
Esistono sei livelli di titoli (livello di importanza: da 1 a 6) che il browser visualizza usando
particolari font e portando a capo il testo successivo.Non servono a fare il testo “+ grande”, ma ad indicare del
testo che è considerato + importante nel documento.
<h1> <h2> <h3> <h4> <h5> <h6>
Paragrafi
Un nuovo paragrafo incomincia con il tag <P> e finisce con il tag </P>. Con questo tag possiamo utilizzare degli
attributi che ci consentono di posizionare il testo ad esempio
Posizioniamo il testo a sinistra della pagina
<P ALIGN=LEFT>
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
</P>
<P ALIGN=CENTER>
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
</P>
<P ALIGN=RIGHT>
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
</P>

Font
Possiamo modificare il font di un testo tramite il tag <FONT>. Questo tag possiede tre attributi fondamentali quali
COLOR specifica il colore del testo in formato esadecimale
SIZE specifica la dimensione del testo
FACE specifica il font vero e proprio del testo
esempio:
<FONT COLOR=”#45F3E0″ SIZE=1 FACE=”arial”>uno</FONT>
<FONT COLOR=”#FFA30C” SIZE=2 FACE=”verdana”>due</FONT>
<FONT COLOR=”#00FF10″ SIZE=2 FACE=”tahoma”>tre</FONT>

Liste
In html, le liste possono essere di due tipi:
Ordinate si usa il tag <OL> </OL> per dichiarare la lista e <LI> per le voci.
Non ordinate si usa il tag <UL>, </UL> per dichiarare la lista e <LI> per le voci.
Esempio di liste ordinate
<OL>
<LI> item 1
<LI>item 2
<LI>item 3
</OL>
Esempio di liste non ordinate
<UL>
<LI> voce 1
<LI>voce 2
<LI>voce 3
</UL>
Breve corso di sql
La parte di SQL dedicata all’interrogazione del DBMS è probabilmente la parte più importante ed utilizzata del
linguaggio.
Innanzitutto bisogna precisare che SQL esprime le dichiarazioni in modo dichiarativo, ovvero si specifica
l’obiettivo dell’interrogazione e non il modo con cui ottenerlo; in questo si contrappone ai linguaggi
di interrogazione procedurali, come l’algebra relazionale, in cui si specifica il modo in cui
l’interrogazione deve essere eseguita. Per essere eseguita l’interrogazione deve essere analizzata
dall’interprete SQL (che è un componente del DBMS) per essere tradotta in un’interrogazione
equivalente in linguaggio procedurale.
Interrogazioni semplici
Le interrogazioni in SQL sono specificate tramite l’uso dell’istruzione select la cui struttura
essenziale è la seguente :
Target list
Select ListaAttributi
Clausola from
From ListaTabelle
Clausola where
[ where Condizione ]
L’interrogazione SQL seleziona, tra le righe che appartengono al prodotto cartesiano delle tabelle elencate
nella clausola from, quelle che soddisfano la clausola where (se è assente vengono selezionate tutte le righe).
Su ciascuna riga vengono considerate quelle che compaiono nella target list (tutte se è specificato il
carattere jolly *).
Nella target list possono essere definiti degli alias, ovvero dei nomi che possono essere usati,
successivamente, per richiamare il campo.
Esempio:
Select Stipendio as Salario
from Impiegato
where Cognome = “Rossi”
Prende il valore dello stipendio di “Rossi” dalla tabella Impiegato ridefinendolo come Salario.
Nella target list possono essere inserite anche espressioni generiche (addizione, sottrazione, moltiplicazione ecc.).
Ad esempio :
Select Stipendio as Salario, Stipendio/12 as SalarioMensile
from Impiegato
where Cognome = “Rossi”
Per quanto riguarda la clausola from essa rappresenta l’insieme delle tabelle a cui si vuole accedere,
e delle quali verrà eseguito il prodotto cartesiano. Nel caso di più tabelle il join (unione)
viene eseguito specificando nella clausola where il legame tra le tabelle. Considerando l’esempio
del paragrafo precedente (tabelle Impiegato e Dipartimento) e volendo prendere valori da entrambe le tabelle:
Select Impiegato.Nome, Impiegato.Cognome, Dipartimento.Citta
From Impiegato, Dipartimento
Where Impiegato.Dipart = Dipartimento.Nome
Rispetto agli esempi precedenti si nota l’uso del punto (in piena sintassi OOP) per indicare a quali
a quale tabella si riferisce l’attributo.
La clausola where ammette una serie di espressioni booleane (=logiche); è possibile,
all’interno della clausola, combinare predicati semplici con gli operatori logici and, or e not.
Ciascun predicato semplice confronta (con gli operatori =,<>,<,>,<= e >=) una espressione costruita
a partire dai valori degli attributi per la riga o con un valore costante o con il risultato
della valutazione di un’altra espressione.
Esempio:
Select Nome
From Impiegato
Where Cognome = ‘Rossi’ and
(Dipart = ‘Amministrazione’ or Dipart = ‘Produzione’)
che seleziona l’impiegato di nome “Rossi” appartenente al dipartimento ‘Amministrazione’ o ‘Produzione’.
Oltre agli operatori standard già citati SQL mette a disposizione l’operatore like per il confronto di stringhe.
Tale operatore si comporta come l’operatore di uguaglianza ma, a differenza di quest’ultimo,
supporta anche i caratteri “%” (percentuale) e “_” (trattino sottolineato). Il primo rappresenta
un carattere arbitrario mentre il secondo una stringa arbitraria (anche vuota).
Ad esempio:
Select *
From Impiegato
Where Cognome like ‘_o%i’
Seleziona tutti gli impiegati il cui cognome termina con la lettera “i” e la cui seconda lettera è una “o”.
Di particolare importanza la gestione dei valori null nella valutazione dei predicati. Infatti nell’algebra
booleana convenzionale si prendono in considerazione unicamente due valori (vero o falso)
mentre abbiamo visto che avendo a che fare con delle basi di dati, possiamo avere anche il valore null
(=sconosciuto). Le ultime versioni di SQL gestiscono i campi null considerandoli nella valutazione
di relazioni complesse , estendendo a tre valori, vero | falso | null appunto, il possibile risultato.
Ultima precisazione riguarda la selezione dei campi null che si effettua tramite la sintassi:
Attributo is [not] null
Tale predicato risulta vero solo se il valore è null. Il predicato not null è il suo contrario.
Uso del join
L’ultima versione di SQL (SQL-2) ha introdotto una sintassi alternativa per l’espressione di join che
permette di distinguere tra le condizioni che rappresentano condizioni di join e quelle
che rappresentano condizioni di selezioni di riga. Inoltre il linguaggio è stato arricchito
di nuove espressioni di join.
Innanzitutto la sintassi è la seguente:
Select AttrExpr [ [as] Alias ] {, AttrExpr [ [as] Alias ] }
From Tabella [ [as] Alias ]
{, TipoJoin Tabella [ [as] Alias ] on CondizioneDiJoin }
[ where AltraCondizione ]
Mediante questa sintassi la condizione di join non compare come argomento della clausola where,
ma viene invece spostata nell’ambito della clausola from, associata alle tabella che vengono coinvolte nel join.
Il parametro TipoJoin specifica quale è il tipo di join da usare, ed ad esso si possono sostituire
i termini inner, right outer, left outer o full outer (in cui il qualificatore outer è opzionale).
L’operatore inner join è il più comune e produce una selezione delle righe del prodotto cartesiano
per cui la condizione è vera.
Ad esempio l’interrogazione realizza precedentemente con l’utilizzo del where ora può essere riscritta:
Select I.Nome, Cognome, Citta
From Impiegato I inner join Dipartimento D on Dipart = D.Nome
Questo è il caso di un join interno, perché le righe che vengono coinvolte nel join sono in generale
un sottoinsieme delle righe di ciascuna colonna. Può, infatti, capitare che alcune righe
non vengano considerate in quanto non esiste una corrispondente riga nell’altra non vengano
considerate in quanto non esiste una corrispondente riga nell’altra per cui la condizione
sia soddisfatta. Questo comportamento molto spesso non rispetta le esigenze delle applicazioni,
le quali, alla eliminazione delle righe operata dal join, possono preferire di mantenere le righe,
ponendo eventualmente opportuni valori null. Il join esterno (outer join) ha proprio questo compito.
Esistono tre diversi tipi di join esterno : left, right e full. Con il full join vengono presi tutti
i valori delle tabelle, con il left tutti quelli della prima tabella specificata mentre con il right
tutti quella della seconda.
Mentre una relazione è costituita da un insieme non ordinato di tuple, nell’uso reale delle basi di
dati sorge spesso il bisogno di costruire un ordine sulle righe delle tabelle. SQL permette di costituire
un ordine con l’istruzione order by posta dopo la clausola where. La sintassi è :
Order by AttrDiOrdinamento [ ASC | DESC ]
{ , AttrDiOrdinamento [ ASC | DESC ] }
In questo modo si specificano gli attributi che devono essere presi in considerazione per realizzare
l’ordinamento (crescente o decrescente).
Operatori aggregati
Tali operatori sono una serie di parole chiave del linguaggio SQL dedicate all’aggregazione dei dati,
grazie ai quali è possibile definire interrogazioni di notevoli interesse applicativo. E’ necessario ricorrere
a questi operatori ogni qual volta occorra valutare delle proprietà che dipendono da insiemi di righe.
Lo standard SQL prevede cinque operatori aggregati, divisibili in due gruppi: count da una parte e sum,
max, min, avg dall’altra.
L’operatore count permette di determinare il numero di righe di una interrogazione; la sintassi è la seguente:
Count ( * | [ distinct ] | [ all ] ListaAttributi )
L’opzione * restituisce il numero delle righe; l’opzione distinct, invece, restituisce il numero dei
diversi valori degli attributi mentre l’opzione all restituisce il numero dei valori diversi da null.
Ad esempio:
Select count(distinct Stipendio)
From Impiegato
Restituisce il numero dei diversi valori dell’attributo Stipendio fra tutte le righe della tabella Impiegato.
Oppure:
Select count(all Nome, Cognome)
From Impiegato
Restituisce il numero delle righe che possiedono un valore diverso da null sia per l’attributo Nome che per
l’attributo Cognome.
Gli altri operatori di aggregazione richiedono, invece, solo un attributo o un’espressione,
eventualmente preceduta dalle parole chiave distinct o all. Le funzioni sum ed avg ammettono
come argomento solo espressione numeriche mentre max e min accettano anche intervalli di tempo e stringhe.
Gli operatori hanno il seguente significato:
· Sum : restituisce la somma dei valori posseduti dall’attributo su tutte le righe
· Max e min : restituiscono il massimo ed il minimo valore tra quelli di ciascuna riga (su questi operatori distinct o all non hanno alcun effetto)
· Avg : restituisce il valore medio tra quelli dell’attributo
Interrogazioni con raggruppamento
Qualora occorra produrre delle aggregazioni a dei sottoinsiemi di righe occorre fare ricorso alla
clausola group by. Questa istruzione permette di creare dei raggruppamenti parziali,
mostrando una sola riga per ogni insieme che ha uno stesso valore nell’attributo passato
come parametro.
Ad esempio:
Select Dipart, avg(Stipendio)
From Impiegato
Group by Dipart
Questa interrogazione ha come risultato un’insieme di righe, una per ogni valore dell’attributo Dipart,
contenente ognuna il nome del dipartimento e la media tra i valori dell’attributo Stipendio relativi
a ciascun dipartimento.
Predicati sui gruppi
Una volta eseguito un raggruppamento in sottoinsiemi con la clausola group by è possibile
selezionare solo alcuni gruppi usando la clausola Having.
La clausola having è il corrispondente per i gruppi della clausola where per gli attributi.
Essa descrive le condizioni che si devono applicare al termine dell’esecuzione di una
interrogazione che fa uso della clausola group by.
Esempio:
Select Dipart, sum(Stipendio) as SommaStipendi
From Impiegato
Group by Dipart
Having SommaStipendio>100
Volendo riassumere la sintassi SQL dell’istruzione select con tutte le clausole analizzate avremmo che:
Select ListaAttributiOEspressioni
From ListaTabelle
[ where CondizioniSemplici ]
[ group by ListaAttributiDiRaggruppamento ]
[ having CondizioniAggregate ]
[ order by ListaAttributiDiOrdinamento ]
Manipolazione dei dati in SQL
La parte di manipolazione dei dati si occupa delle operazioni di inserimento,
modifica e cancellazione delle righe.
Inserimento di righe
Il comando di inserimento di righe nella base di dati presenta due sintassi alternative:
Insert into NomeTabella [ ListaAttributi ]
< values ( ListaDiValori ) | SelectSQL >
Questa sintassi permette di inserire una riga specificandone i valori dei suoi attributi.
Una seconda sintassi, meno usata ma più consona all’impostazione SQL che ha come oggetto
le tabelle e non le singole righe, permette di aggiungere degli insiemi di righe. La sua sintassi è:
Insert into NomeTabellaDestinazione
( Select ListaAttributi
from NomeTabellaOrigine
where Condizione )
In questo modo vengono inseriti nella tabella destinazione le righe risultanti
dalla selezione sulla tabella origine.
Cancellazione delle righe
Il comando SQL delete è il comando che permette di eliminare delle righe dalle tabelle di una base di dati.
La sintassi è:
Delete from NomeTabella [ where Condizione ]
…e attua la cancellazione delle righe che rispondono alla condizione specificata.
La condizione rispetta la sintassi SQL, per cui potremmo avere al suo interno delle interrogazioni
nidificate che fanno riferimento ad altre tabelle. Un semplice esempio che elimina i dipartimenti senza impiegati:
Delete from Dipartimento
Where Nome not in (select Dipart
From Impiegato)
E’ da notare la differenza tra il comando delete ed il comando drop. Ad esempio il comando:
Delete from Dipartimento
…elimina tutte le righe della tabella dipartimento, ma lo schema rimane immutato; il comando,
infatti, cancellerà solo le istanze della tabella. Mentre il comando:
Drop table Dipartimento cascade
…elimina tutte le istanze della tabella, nonché lo schema.
Modifica delle righe
In SQL la modifica delle righe avviene mediante l’utilizzo del comando update, seguendo la sintassi:
Update NomeTabella
Set Attributo = < Espressione | SelectSQL | Null | default >
{ , Set Attributo = < Espressione | SelectSQL … > }
[ where Condizione ]
Il comando update permette di aggiornare uno o più attributi delle righe di NomeTabella che soddisfano
l’eventuale condizione. Se la condizione non compare ovviamente si suppone di default il valore vero
e si esegue la modi fica su tutte le righe della tabella.
Ecco un esempio che aumenta del 20% lo stipendio degli impiegati che si chiamano “Claudio”:
Update Impiegato Set Stipendio = Stipendio * 1.2
Where Nome = ‘Claudio’
Lascio al lettore il compito di interpretare la seguente istruzione di update:
Update Impiegato
Set Stipendio = ( Select Max(Stipendio) from Dirigenti )
Where Nome like ‘_l*di_’ and Residenza = ‘Sestri Levante’ and Domicilio = ‘Milano’ and DataNascita > 8-23-1975 and DataNascita < 8-25-1975
Creare un database
Per creare un database in mysql dobbiamo utilizzare la sintassi
CREATE TABLE nome_tabella(
campo1 tipo [(dimensioni)],
campo2 tipo [(dimensioni)],
PRIMARY KEY (`campoN`)
);
i tipi di campo che ci interessano sono:
“int” di tipo intero
“varchar” di tipo carattere (fino a 255)
“longtext” di tipo carattere (senza limite)
Leggere e scivere il contenuto di un cookies
Obiettivo
In questo articolo tratteremo come gestire i cookies con php.
I cookies
I cookies che in inglese significano “biscotti” sono un meccanismo per memorizzare i dati. Essi possono essere usati per ricordare il valore di variabili nel nostro computer. Una variabile che potrebbe essere per esempio l’ultima visita in un sito.
Articolo
In php, i cookies possono essere impostati tramite la funzione setcookie().La funzione è cosi definita:
int setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
questa definisce un cookie da spedire. I cookie devono essere spediti prima di qualsiasi altra intestazionequindi prima di qualsiasi tags html
altrimenti avremo un errore del tipo:
Warning: Cannot add header information - headers already sent by
(output started at f:\programmi\easyphp\www\nuovaversione\amico.php:5) in f:\programmi\easyphp\www\nuovaversione\amico.php
on line 9
I cookie non vengono registrati subito, ma diventano disponibili soltanto dalla pagina successiva a quella che li ha
generati o dopo averla ricaricata.
Tutti gli argomenti della funzione eccetto name sono opzionali.
L’argomento expire è un normale intero Unix Timestamp ottenibile grazie alle funzioni time() o mktime()
di php.
Ad esempio:
setcookie (”VariabileCookie”, "prova”);
setcookie (”VariabileCookie”, $value,time()+3600); /* aspira in 1 ora */
setcookie (”VariabileCookie”, $value,time()+3600, “/~percorso/”, “.sastgroup.com”, 1);
Per cancellare i cookies spediti occorre ridefinire gli stessi cookies ma
impostando la data in modo che sia antecedente a quella attuale,
facendo atttenzione a specificare gli stessi parametri con cui sono stati creati.
Ad esempio una data antecedente potrebbe essere: "time() - 3600".
setcookie (”VariabileCookie”);
setcookie (”VariabileCookie”, “”, time() - 3600);
setcookie (”VariabileCookie”, “”, time() - 3600, “/~percorso/”, “.sastgroup.com”, 1);
La variabile registrata nel cookies può essere vista in due modi:
echo $_COOKIE[’VariabileCookie’];
echo $HTTP_COOKIE_VARS[”VariabileCookie”];
Invece di registrare delle singole variabili, possiamo registrare anche array
di cookies. Il modo è molto semplice, basta usare
la notazione degli array al posto del nome del cookie. Questo equivale alla spedizione di tanti cookie quanti sono gli elementi dell’array.
setcookie (”cookie[three]”, “valoretre”);
setcookie (”cookie[two]”, “valoredue”);
setcookie (”cookie[one]”, “valoreuno”);
if (isset ($cookie)) {
while (list ($name, $value) = each ($cookie)) {
echo “$name -> $value<br>";
}
}
leggere i dati da un database access con jdbc
Obiettivo
In questo articolo tratteremo un semplice modo per connettersi ad un database
access con
java jdbc ed eseguire una qualsiasi query.
Articolo
Avremo infatti due aree di testo in cui metteremo la stringa sql da eseguire
in una e nell’altra
visualizzeremo il risultato della query.
Non occorre impostare nessuna fonte di dati odbc perchè si connette
direttamente al file.
Il nostro database pippo.mdb sarà cosi costituito
contatti
ID autonumber
NOME text
COGNOME text
INDIRIZZO text
TELEFONO text
Il programma in java pippo.java sarà invece:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.sql.*;
public class pippo extends JFrame
{
private JTextArea jTable1;
private JScrollPane jScrollPane1;
private JTextArea jTextArea1;
private JScrollPane jScrollPane2;
private JButton esegui;
private JButton azzera;
private JPanel contentPane;
public pippo()
{
super();
initializeComponent();
this.setVisible(true);
}
private void initializeComponent()
{
jTable1 = new JTextArea();
jScrollPane1 = new JScrollPane();
jTextArea1 = new JTextArea("inserisci qui la query …");
jScrollPane2 = new JScrollPane();
esegui = new JButton();
azzera = new JButton();
contentPane = (JPanel)this.getContentPane();
jScrollPane1.setViewportView(jTable1);
jScrollPane1.setEnabled(false);
jScrollPane2.setViewportView(jTextArea1);
esegui.setText("esegui");
esegui.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
esegui_actionPerformed(e);
}
});
azzera.setText("azzera");
azzera.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
azzera_actionPerformed(e);
}
});
contentPane.setLayout(null);
addComponent(contentPane, jScrollPane1, 7,9,465,361);
addComponent(contentPane, jScrollPane2, 7,375,376,126);
addComponent(contentPane, esegui, 390,472,83,28);
addComponent(contentPane, azzera, 390,435,83,28);
this.setTitle("leggi dal db");
this.setLocation(new Point(12, 27));
this.setSize(new Dimension(499, 545));
}
private void addComponent(Container container,Component c,int x,int y,int
width,int height)
{
c.setBounds(x,y,width,height);
container.add(c);
}
private void esegui_actionPerformed(ActionEvent e)
{
String QUERY=jTextArea1.getText();
String DB_URL="jdbc:odbc:;DRIVER=Microsoft Access Driver
(*.mdb);UID=;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL=MS
Access;DriverId=281;DBQ=pippo.mdb";
int i;
int conta=0;
if(QUERY.length()>0){
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
Connection conn=DriverManager.getConnection(DB_URL);
jTable1.setText("Connessione riuscita \n");
Statement stmt=conn.createStatement();
ResultSet rslt = stmt.executeQuery (QUERY);
ResultSetMetaData rsmd=rslt.getMetaData();
i=rsmd.getColumnCount(); //trova il numero di colonne
while(rslt.next())
{
for(int j=1;j<=i;j++)
{
jTable1.append(rslt.getString(j)+"\n");
}
conta++;
}
jTable1.append("\n Record trovati:"+conta);
//stmt.close();
//rslt.close();
//conn.close();
}
catch(Exception ez)
{
ez.printStackTrace();
JOptionPane.showMessageDialog(this,"errore: "+ QUERY,"errore SQL"
,JOptionPane.QUESTION_MESSAGE);
}
} //if query>0
else{
jTextArea1.setText("Devi inserire una query \n");
}
}
private void azzera_actionPerformed(ActionEvent e)
{
jTextArea1.setText("");
jTable1.setText("");
}
public static void main(String[] args)
{
JFrame.setDefaultLookAndFeelDecorated(true);
JDialog.setDefaultLookAndFeelDecorated(true);
try
{
UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
}
catch (Exception ex)
{
System.out.println("Failed loading L&F: ");
System.out.println(ex);
}
new pippo();
}
}
Lettura e scrittura file .props
In questo articolo analizzeremo come leggere e scrivere un file .props. Chiaramente darò per
scontato il fatto che avete l’interprete java installato e che sapete qualcosa di java.
Innanzitutto creiamo un file con estenzione .props chiamandolo install.props
Supponiamo di volere memorizzare solo il valore di
due variabili, abbiamo tanti modi a disposizione per farlo: possiamo
memorizzarli in un database,in un file di testo, … ,e in un file
props.
Il procedimento è molto facile.
Supponiamo di volere memorizzare le variabili
"soldi" e "cambio" e li inizializziamo a zero
il nostro file install.props sarà cosi
soldi=0
cambio=bo!
Ecco il codice per leggere e memorizzare questi
dati da una finestra java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.Properties;
public class modificaprop extends JFrame implements ActionListener
{
JTextField Textsoldi;
JTextField Textcambio;
JLabel Labelsoldi;
JLabel Labelcambio;
JButton save;
Properties a;
JPanel pans;
public modificaprop()
{
setSize(400,300);
Textsoldi=new JTextField(”");
Textcambio=new JTextField(”");
save=new JButton(”salva”);
Labelsoldi=new JLabel("soldi");
Labelcambio=new JLabel("cambio");
pans=new JPanel(new GridLayout(3,2));
pans.add(Labelsoldi);
pans.add(Textsoldi);
pans.add(Labelcambio);
pans.add(Textcambio);
pans.add(new JLabel(”"));
pans.add(save);
save.addActionListener(this);
getContentPane().add(pans);
a = new Properties();
try
{
a.load(getClass().getClassLoader().getResourceAsStream(”install.props”));
Textcambio.setText(a.getProperty(”cambio”));
Textsoldi.setText(a.getProperty(”soldi”));
}
catch(IOException ioexception) {System.out.println(ioexception);}
catch(NullPointerException nullpointerexception) {System.out.println(nullpointerexception);}
}
public void actionPerformed(ActionEvent actionevent)
{
if(actionevent.getSource().equals(save))
{
FileOutputStream fileoutputstream = null;
try
{
fileoutputstream = new FileOutputStream(new File(”install.props”));
}
catch(IOException ioexception) { }
a.setProperty(”soldi”, Textsoldi.getText());
a.setProperty(”cambio”,Textcambio.getText());
a.save(fileoutputstream, "i miei dati");
}
}
public static void main(String args[])
{
new modificaprop().show();
}
}
Attraverso questo codice tra try e catch leggiamo i dati
try
{
a.load(getClass().getClassLoader().getResourceAsStream(”install.props”));
Textcambio.setText(a.getProperty(”cambio”));
Textsoldi.setText(a.getProperty(”soldi”));
}
catch(IOException ioexception) {System.out.println(ioexception);}
catch(NullPointerException nullpointerexception) {System.out.println(nullpointerexception);}
}
Attraverso questo codice li scriviamo
FileOutputStream fileoutputstream = null;
try
{
fileoutputstream = new FileOutputStream(new File(”install.props”));
}
catch(IOException ioexception) { }
a.setProperty(”soldi”, Textsoldi.getText()); //setta il valore
della variabile soldi
a.setProperty(”cambio”,Textcambio.getText());
a.save(fileoutputstream, "i miei dati");

























