codice:
public static void main (String [] args) throws Exception {
Class.forName("org.sqlite.JDBC");
Connection c = DriverManager.getConnection("jdbc:sqlite:db1.db");
Statement s = c.createStatement();
s.executeUpdate("drop table places");
s.executeUpdate("create table places (" +
"codice INTEGER PRIMARY KEY," +
"nome1 VARCHAR(50), " +
"localita1 VARCHAR(50), " +
"telefono1 VARCHAR(50))");
BufferedReader br = new BufferedReader( new FileReader("Docs/DB.txt"));
String line;
String querySQL = "";
int codice = 0;
while((line=br.readLine())!=null){
String t=line.replaceAll(":", " ");
t=t.replaceAll("'", " ");
String [] w=t.split(";");
String nome=w[0].trim();
String localita=w[1].trim();
String telefono=w[2].trim();
querySQL = "insert into places(codice,nome1,localita1,telefono1) values('" + codice +"','" + nome + "', '" + localita + "', '" + telefono +"')";
s.executeUpdate(querySQL);
codice++;
}br.close();}}
Funziona
Finalmente ho risolto! e crea il database nel modo corretto...
Alex'87 grazie per i tuoi consigli e per la pazienza...
Ora come ultima cosa vorrei inserire nel sito che sto creando (ahimè tutte queste fatiche sono per un sito web) la tabella che avevo postato qualche giorno fa... sono riuscito a correggerla e a riempirla come volevo. La mia domanda è: come posso fare a integrarla dentro la mia pagina web? ho due idee:devo copiare il codice della tabella dentro la jsp all'interno dei tag <% %> oppure devo trasferire il codice dentro la cartella WEB-INF di apache tomcat? Scegliendo la seconda ipotesi poi dovrei comunque legare le due pagine...
Posto il codice della jTable:
codice:
import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableColumnModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
class TableExample extends JFrame {
static ArrayList<String> indirizzi= new ArrayList<String>();
public static void leggi_txt(){
try{
String file= new String("DB.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line=br.readLine())!=null){
String [] w=line.split(";");
String nome=w[0].trim();
String localita=w[1].trim();
String telefono=w[2].trim();
indirizzi.add(nome);
indirizzi.add(localita);
indirizzi.add(telefono);
}br.close();
}catch(IOException e){
e.printStackTrace();
System.exit(1);
}}
TableExample() {
super("Address Book");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
///////////////////////////////////////////////
// n° di righe
int rows = 202;
// n° di colonne
int columns = 3;
// etichette colonne
String[] labels = {"nome", "indirizzo", "telefono"};
// larghezza colonne
int[] widths = {50, 70, 120};
// vettore dati tabella
Vector data = new Vector(0, 1);
// vettore colonne tabella
Vector columnNames = new Vector(0, 1);
// popolo la tabella
for(int i = 0; i < rows; i++) {
// vettore singola riga tabella
Vector row = new Vector();
for(int j = 0; j < columns; j++) {
row.addElement(" " + indirizzi.get(3 * i + j));
}
data.addElement(row);
}
// intestazioni colonne
for(int i = 0; i < columns; i++) {
columnNames.addElement(labels[i]);
}
// modello dati della tabella
DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
// modello attributi delle colonne
DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
for(int i = 0; i < columns; i++) {
// modello attributi colonna singola
TableColumn column = new TableColumn(i, widths[i]);
column.setHeaderValue(labels[i]);
columnModel.addColumn(column);
}
// la tabella
JTable table = new JTable(tableModel, columnModel);
table.setPreferredScrollableViewportSize(new Dimension(350, 100));
JScrollPane scroll = new JScrollPane(table);
///////////////////////////////////////////////////
getContentPane().add(scroll);
pack();
setVisible(true);
}
public static void main(String[] args) {
leggi_txt();
new TableExample();
}}
HO TROVATO UNA VECCHIA DISCUSSIONE DEL FORUM DELLA QUALE RIPORTO IL CODICE.
Forse stampa il contenuto della tabella ma io vorrei soltanto che essa apparisse, che fosse sul mio sito.
codice:
import javax.swing.*;
import javax.swing.table.*;
import java.awt.print.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.Dimension;
public class StampaTabella implements Printable {
JFrame frame;
JTable tableView;
public StampaTabella(JTable Tabella) {
tableView = Tabella;
}
public void Stampa() {
PrinterJob pj=PrinterJob.getPrinterJob();
pj.setPrintable(StampaTabella.this);
pj.printDialog();
try{
pj.print();
}
catch (Exception ex) {
ex.printStackTrace();
}
}
public int print(Graphics g, PageFormat pageFormat, int pageIndex) throws
PrinterException {
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.black);
int fontHeight = g2.getFontMetrics().getHeight();
int fontDesent = g2.getFontMetrics().getDescent();
//leave room for page number
double pageHeight = pageFormat.getImageableHeight()-fontHeight;
double pageWidth = pageFormat.getImageableWidth();
double tableWidth = (double)tableView.getColumnModel().getTotalColumnWidth();
double scale = 1;
if (tableWidth >= pageWidth) {
scale = pageWidth / tableWidth;
}
double headerHeightOnPage = tableView.getTableHeader().getHeight() * scale;
double tableWidthOnPage = tableWidth * scale;
double oneRowHeight = (tableView.getRowHeight() + tableView.getRowMargin()) *
scale;
int numRowsOnAPage = (int)((pageHeight - headerHeightOnPage) / oneRowHeight);
double pageHeightForTable = oneRowHeight * numRowsOnAPage;
int totalNumPages= (int)Math.ceil(((double)tableView.getRowCount()) /
numRowsOnAPage);
if(pageIndex>=totalNumPages) {
return NO_SUCH_PAGE;
}
g2.translate(pageFormat.getImageableX(), pageFormat.getImageableY());
g2.drawString("Page: "+(pageIndex+1),(int)pageWidth/2-35,
(int)(pageHeight+fontHeight-fontDesent));//bottom center
g2.translate(0f,headerHeightOnPage);
g2.translate(0f,-pageIndex*pageHeightForTable);
//TODO this next line treats the last page as a full page
g2.setClip(0, (int)(pageHeightForTable*pageIndex),(int)
Math.ceil(tableWidthOnPage),
(int) Math.ceil(pageHeightForTable));
g2.scale(scale,scale);
tableView.paint(g2);
g2.scale(1/scale,1/scale);
g2.translate(0f,pageIndex*pageHeightForTable);
g2.translate(0f, -headerHeightOnPage);
g2.setClip(0, 0,(int) Math.ceil(tableWidthOnPage),
(int)Math.ceil(headerHeightOnPage));
g2.scale(scale,scale);
tableView.getTableHeader().paint(g2);//paint header at top
return Printable.PAGE_EXISTS;
}
}
Fatto questo per stampare una jtable scrivo questo codice:
codice:
StampaTabella prn = new StampaTabella(stat); // stat è la jtable da stampare
prn.Stampa();
prn = null;
Scusate l'ignoranza, ma un semplice metodo print() non mi permette di stampare facilmente la tabella?