Salut à tous

J'ai écrit un programme en java (voir le code ci-en bas) qui me permet de pomper une table dans une base de donnée 4D 2004_3 vers une base de donnée Mysql

Ce programme marche! mais pas à tous les coups dans 50% des cas je reçoit le message

java.sql.SQLException: com.fourd.jdbc.StatementImpl::executeSELECTCommand: Failed to execute SELECT command.
Network problem - Server unreachable

or donc puisque il marche une fois sur deux, ce n'est pas un problème de code en java, ce n'est pas un problème de configuration de la base, ce n'est pas un problème de reseau vu que les deux machines sont côte à côte....donc c'est quoi le problème??

Pour y remédier, je vousdrais faire truc du genre:

while ( ! ResultSet rs4 = pstmt.executeQuery() );

grosso modo une boucle qui effectue la requette jusque à ce qu'elle réussisse.
En PHP je sais que je peux tester si mysql_query retourne false mais en java il semble qu'il faut jouer avec les throws? non?

quelque un peut il m'indiquer un petit tutoriel sur la gestion des erreurs "catch"" try" etc...sauf si il y a plus simple.

Merci à vous et voici le code si jamais

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
 
 
// ****************************************** 
// Code exemple test4Dconn.java 
// par Bin Kobayashi 
// ****************************************** 
 
import java.sql.*; 
import java.util.Properties; 
import java.text.Format;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.io.*;
import java.util.regex.Pattern;
import java.util.regex.Matcher;
 
 
public class evenements
{ 
    public static void main(String[] argv) 
    { 
	try 
	{ 
 
	    // préparation de la date
	    java.text.SimpleDateFormat formatermy = new java.text.SimpleDateFormat("yyyy-MM-dd");
	    java.text.SimpleDateFormat formater4d = new java.text.SimpleDateFormat("dd/MM/yyyy");
	    GregorianCalendar datedebut = new java.util.GregorianCalendar();
	    datedebut.ADD(Calendar.DAY_OF_YEAR, -30); 
	    String startdatemy= formatermy.format(datedebut.getTime());
	    String startdate4d= formater4d.format(datedebut.getTime());
 
 
	    //connection à 4D
    	    Properties props = new Properties(); 
    	    props.setProperty("user",""); 
    	    props.setProperty("password",""); 
    	    Class.forName("com.fourd.jdbc.DriverImpl"); 
    	    Driver driver = DriverManager.getDriver("jdbc:4d:127.0.0.1"); 
    	    Connection conn4 = driver.connect("jdbc:4d:192.168.xxxx:xxxx", props);         
 
	    // Création du fichier de sortie
	    FileOutputStream out;
	    PrintStream p;
	    out = new FileOutputStream("evenements.sql");
	    p = new PrintStream( out );
 
 
	    //Préparation de la requette sur 4D
	    PreparedStatement pstmt = conn4.prepareStatement("select Nr_evenement,personnel,Nr_equipement,date_evenement,code_evenement,magasin from Atelier_evenements where date_evenement>?");
 
	    //fromater la date de la requette
	    String aDateString = startdate4d;
	    SimpleDateFormat aFormatter = new SimpleDateFormat("dd/MM/yyyy");
	    Date aDate = aFormatter.parse(aDateString);   
	    pstmt.setDate(1,new java.sql.Date(aDate.getTime()));    
 
	    // executer la requette 4D
	    ResultSet rs4 = pstmt.executeQuery();      
 
	    // Initialisation des chaines
	    String s1, s2,s3,s4,s5,s6,s7,s8,s9;
 
	    // enrichissement du ficher de sortie
	    p.println ("/*Mysql input file:evenements*/");			                          
	    p.println ("delete from 4D_evenements where date_evenement>'"+startdatemy+"';" );
	    p.println("insert into 4D_evenements value ");
 
	    BOOLEAN first=true;
	    while(rs4.next()) 
	    { 
 
		s1 = rs4.getString("Nr_equipement"); 
		s2 = rs4.getString("date_evenement"); 
		s3 = rs4.getString("code_evenement");
		s4 = rs4.getString("personnel"); 
		s5 = rs4.getString("magasin"); 
		s6 = rs4.getString("Nr_evenement"); 
 
		// verifications sur les chaines
		//IF (s6!=NULL) IF ( ! s6.matches("(\\d{4})-(\\d{2})-(\\d{2})"))   s6="null";
		//s2= s2.replaceAll("\\'","\\\\'");    
		//s1= s1.replaceAll(" ","_");
 
		//ajouter la virgule
		IF ( first==false) 
		{
		    p.println(",");
		}
		else
		{
		    first=false;
		}
 
		p.println ("('"+s1+"','"+s2+ "','"+s3+"','"+s4+"','"+s5+"','"+s6+"')");
 
	    }
 
	    p.println (";");    
	    conn4.close(); 
	    p.close();
 
	} catch (Exception e) {System.out.println(e);}
    } 
}