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
16668
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2023
3 004
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
base.update("INSERT INTO URL VALUES(idu,idq,url,dateq,ItemRank);");Je pense que pour prendre en compte les valeurs des champs, il faudrait plutôt écrire ceci :
base.update("INSERT INTO URL VALUES("+idu+","+idq+","+url+","+ dateq.toString+","+ItemRank+");");Il serait également intéressant de récupérer la valeur de retour de la commande et de filtrer l'exception :
public int update(String query) { try { return stmt.executeUpdate(query); } catch (SQLException e) { e.printStackTrace(); return -1; } } int n = base.update(...); System.out.println(n);18 mars 2012 à 16:53