Stai andando un po' allo sbaraglio...Originariamente inviato da Mon91
Non mi da nessun errore, ma il database non si riempe!!codice:package beans; import java.io.BufferedReader; import java.io.FileReader; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.util.ArrayList; public class Main { 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(); ArrayList<String> indirizzi= new ArrayList<String>(); BufferedReader br = new BufferedReader( new FileReader("Docs/DB.txt")); 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(); s.executeUpdate("create table places (" + "nome1 VARCHAR(50) PRIMARY KEY, " + "localita1 VARCHAR(50), " + "telefono1 VARCHAR(50))"); s.executeUpdate("insert into places(nome1,localita1,telefono1) values(' + nome +', ' + localita + ', ' + telefono+')"); } }![]()
![]()
Stai ciclando il contenuto del file, ok, ma cosa fai con i token che hai letto? Niente! La insert va fatta DENTRO il ciclo se vuoi che ti inserisca gli elementi man mano che li leggi... (di conseguenza la tabella va creata PRIMA di iniziare il ciclo)
Inoltre qual è il senso dell'ArrayList indirizzi? Ci butti dentro tutti i token che leggi, senza raggruppare ad esempio... Se faccio indirizzi.get(indice) cosa mi restituisce, un nome? un telefono? una località? boh..! Manca completamente la programmazione ad oggetti.
Per finire, la query è sbagliata (te l'avevo corretta prima...)
Con
non stai passando alcun nome, localita o telefono.. (stai passando la costante 'nome' ad esempio) anche perché nome, localita e telefono non esistono in quel punto (sono dichiarate dentro il while, sono visibili solo lì).codice:"insert into places(nome1,localita1,telefono1) values(' + nome +', ' + localita + ', ' + telefono+')"
La stringa corretta è
oppure, più chiaramente:codice:"insert into places(nome1,localita1,telefono1) values('" + nome + "', '" + localita + "', '" + telefono +"')";
codice:String query = String.format("insert into places(nome1, localita1, telefono1) values ('%s', '%s', '%s')", nome, localita, telefono); // ovviamente quando nome, localita e telefono saranno visibili...

Rispondi quotando