Probléme StringTokenizer
Fermé
HighPaula
Messages postés
22
Date d'inscription
dimanche 18 mars 2012
Statut
Membre
Dernière intervention
9 juin 2015
-
18 mars 2012 à 12:37
HighPaula Messages postés 22 Date d'inscription dimanche 18 mars 2012 Statut Membre Dernière intervention 9 juin 2015 - 19 mars 2012 à 21:49
HighPaula Messages postés 22 Date d'inscription dimanche 18 mars 2012 Statut Membre Dernière intervention 9 juin 2015 - 19 mars 2012 à 21:49
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
18 mars 2012 à 13:01
18 mars 2012 à 13:01
Ta méthode stringToDate lève Exception (en fait ce serait plutôt ParseException), il faut que tu traites cette exception avant qu'elle ne provoque l'arrêt du programme.
Remarques :
Par convention les noms de variables doivent commencer par une minuscule
Depuis Java 5, tu disposes de la classe Scanner, qui te simplifie la vie, pour ne pas avoir à utiliser la combinaison BufferedReader/StringTokenizer qui est lourde !
private final static SimpleDateFormat SDF = new SimpleDateFormat("MM-dd-yyyy HH:mm:ss"); public static Date stringToDate(String sDate) { try { return SDF.parse(sDate); } catch (ParseException e) { e.printStackTrace(); return null; } }
Remarques :
Par convention les noms de variables doivent commencer par une minuscule
Depuis Java 5, tu disposes de la classe Scanner, qui te simplifie la vie, pour ne pas avoir à utiliser la combinaison BufferedReader/StringTokenizer qui est lourde !
public void extraction() throws FileNotFoundException { Scanner fic = new Scanner(new File(nomFichier)); while (fic.hasNextLine()) { String idu, idq, itemRank, url; Date dateq; Scanner sc = new Scanner(fic.nextLine()).useDelimiter("\t"); while (sc.hasNext()) { //if (sc.hasNext()) idu = sc.next(); //else break; if (sc.hasNext()) idq = sc.next(); else break; if (sc.hasNext()) dateq = stringToDate(sc.next()); else break; if (sc.hasNext()) itemRank = sc.next(); else break; if (sc.hasNext()) url = sc.next(); else break; //base.update("INSERT INTO URL VALUES(idu,idq,url,dateq,ItemRank);"); } sc.close(); } fic.close(); }
18 mars 2012 à 14:37
18 mars 2012 à 15:29
Pour le problème d'ajout à la base de donnée, donne moi le code de la classe Sql, ou l'import que tu as fait pour pouvoir l'utiliser.
18 mars 2012 à 16:22
import java.sql.*;
import javax.swing.JOptionPane;
public class Sql {
Connection conn;
Statement stmt;
PreparedStatement pStmt;
ResultSet rs;
String driver ;
String url ;
public Sql(String driver,String url){
this.driver = driver;
this.url = url ;
}
public void connect(String log, String pass)
{
try
{
Class.forName(driver);
conn = DriverManager.getConnection(url,log,pass);
stmt = conn.createStatement();
System.out.println("La Connection a reussi");
}
catch ( SQLException E)
{
JOptionPane.showMessageDialog(null,"Erreur de connexion à la base","Connexion",JOptionPane.WARNING_MESSAGE);
System.out.println("1");
}
catch ( ClassNotFoundException E)
{
E.printStackTrace();
}
}
// Méthode qui renvoit un ResultSet pour une requête
// @args -> la requete
public ResultSet getQuery(String query)
{
try
{
rs = stmt.executeQuery(query);
}
catch (SQLException E)
{
JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE);
System.out.println("2");
System.out.println("SQLException: " + E.getMessage());
System.out.println("SQLState: " + E.getSQLState());
System.out.println("VendorError: " + E.getErrorCode());
}
return rs;
}
public void update(String query) throws SQLException
{
stmt.executeUpdate(query);
}
// Méthode qui renvoit le nombre d'enregistrements affectés
// par un objet PreparedStatement
// @args -> le PreparedStatement
public int update(PreparedStatement p)
{
int r = 0;
try
{
pStmt = p;
r = pStmt.executeUpdate();
}
catch (SQLException E)
{
JOptionPane.showMessageDialog(null,"Erreur de connexion à la base","Connexion",JOptionPane.WARNING_MESSAGE);
System.out.println("6");
}
return r;
}
public void disconnect()
{
try
{
rs.close();
stmt.close();
conn.close();
}
catch ( SQLException E)
{
JOptionPane.showMessageDialog(null,"Erreur de connexion à la base","Connexion",JOptionPane.WARNING_MESSAGE);
System.out.println("14");
}
}
}
18 mars 2012 à 16:35
Je pense que pour prendre en compte les valeurs des champs, il faudrait plutôt écrire ceci :
Il serait également intéressant de récupérer la valeur de retour de la commande et de filtrer l'exception :
18 mars 2012 à 16:53