Ciao a tutti,
sto scrivendo un programma che importando le informazioni da un file .txt esterno, li carichi in un database.

Il file txt, molto lungo, è così composto (AnagraficaLibri.txt)

codice:
West side Transilvania#Marks John#E/O#2010
Una faccenda privata#Iles Greg#Piemme#2010
Il bizzarro museo degli orrori#Rhodes Dan#Newton Compton#2010
L' amore del bandito letto da Rolando Ravello#Carlotto Massimo#Emons#2010
Spelix. Storia di gatti# di stranieri e di un delitto#Rivera Annamaria#Dedalo#2010
Jane e l'arcano di Penfolds Hall#Barron Stephanie#TEA#2010
Hunted. La casa della notte#Cast P. C.; Cast Kristin#Nord#2010
Gli illuminati#Bello Antoine#Fazi#2010
Tredici ore#Meyer Deon#E/O#2010
Praticamente: titolo#autore#casaEditrice#anno.

Questi dati vanno caricati nel database LIBRERIA, nella tabella libro. Segue il codice sql.

codice:
create table if not exists libro (
id_libro int auto_increment not null,
titolo text not null,
autore text not null,
casaEditrice text not null,
anno year not null,

primary key (id_libro)
) engine=innodb;
A questo punto mi sono creato un'applicazione JAVA per eseguire ciò che volevo:

codice:
import java.io.*;
import java.sql.*;
import java.util.*;


	public class LetturaFile
	{
		public static void main(String[] args) throws Exception	{

			try {   
				Class.forName("com.mysql.jdbc.Driver");
				Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/LIBRERIA?" + "user=user&password=xxx");
				
	        Statement stmt = conn.createStatement();
			Scanner anagrafica = new Scanner(new File("AnagraficaLibri.txt"));
			anagrafica.useDelimiter("/n");
			
			
			while(anagrafica.hasNext()){
				StringTokenizer split = new StringTokenizer(anagrafica.next(),"#");
				while(split.hasMoreTokens()){
				for(int i=1; i<=4; i++){
					if (i==1){
						String titolo = split.nextToken();
						stmt.executeUpdate("INSERT INTO libro(titolo) VALUES ('"+titolo+"')");
					} else if (i==2){
						String autore = split.nextToken();
						stmt.executeUpdate("INSERT INTO libro(autore) VALUES ('"+autore+"')");
					} else if (i==3){
						String casaEditrice = split.nextToken();
						stmt.executeUpdate("INSERT INTO libro(casaEditrice) VALUES ('"+casaEditrice+"')");
					} else if (i==4){
						String anno = split.nextToken();
						stmt.executeUpdate("INSERT INTO libro(anno) VALUES ('"+anno+"')");
					}
				}
				
				
					
				}
				
				stmt.close();
				conn.close(); 
				
			}
	       }
	         catch(ClassNotFoundException e)
	        {
	            System.out.println(e);
	        }
	        catch(SQLException e)
	        {
	            System.out.println(e);
	        }finally{
	            System.out.println("Operazione effettuata.");
			}
		

		}
	}
Ho utilizzato come delimitatore l'invio e come split il #. L'errore che mi stampa è: java.sql.SQLException: Field 'autore' doesn't have a default value, cioè "il campo autore non ha un valore di default", ed effettivamente così dovrebbe essere visto che i dati glieli sto passando io manualmente. Infine, mi sono accorto che non legge tutto il file ma si ferma ad un certo punto. Anche qui, non ho capito perchè.

p.s. Abbiate pietà, ho ore di studio e lavoro alle spalle!

Grazie in anticipo.