Bonjour j'ai un petit problème dans un programme java
ce programme est un parseur de trame NMEA j'arrive a recevoire ces trames les convertire ainsi que les stocker dans une BD
le probleme c'est que au bout de 3 a 5 trames le programme plante et m'affiche l'erreur suivante:

java.lang.ArrayIndexOutOfBoundsException: 12 je sais que c'est une erreur de deppasement de capacite mais j'ai pas pu la localiser
j'ai pu determiner l'emplacement de l'erreur c'est dans la fonction de stockage dans la base de donnee (ci-dessous)

une autre chause c que pour chaque réception de trame une erreur ce genre mais elle ne bloque pas le programme les détails de cette erreur sont:

java.net.BindException: Address already in use: JVM_Bind
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.PlainSocketImpl.bind(Unknown Source)
at java.net.ServerSocket.bind(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at java.net.ServerSocket.<init>(Unknown Source)
at serveur$conexion.getconexion(serveur.java:397)
at serveur$conexion.getMessage(serveur.java:422)
at serveur$conexion.getconexion(serveur.java:400)
at serveur$RunImpl.run(serveur.java:381)
at java.lang.Thread.run(Unknown Source)

voici la fonction responsable du stockage dans la base de donnee

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
 
 
		public void InserSql()
		{
			Connection con=null;
			PreparedStatement ps=null;
 
			try
			{
				String cmd;
				cmd=null;temp=null;
				cmd="insert into trame(id,type,temps,etat,coord,vitesse,cap,date,declin,chek) values(null,'";
				cmd=cmd+type+"','";
				temp=heure[0]+":"+heure[1]+":"+heure[2];
				H=temp;
				cmd=cmd+temp+"','";
				cmd=cmd+etat+"',";
 
		 		temp=temp.valueOf(latitude[0]);
		 			temp=temp+"°"+latitude[1];
		 			temp=temp+"."+latitude[2];
		 			temp=temp+directionlat;
		 			La=temp;
		 			String coord=new String();
		 			coord="Geomfromtext('Point(21 21)')";
		 			cmd=cmd+coord+",";
 
		 		temp=temp.valueOf(longitude[0]);
	 			temp=temp+"°"+longitude[1];
	 			temp=temp+"."+longitude[2];
	 			temp=temp+directionlong;
	 			Lo=temp;
 
 
	 			cmd=cmd+vitesse+",'";
		 		cmd=cmd+cap+"','";
		 		System.out.println("6");
		 		temp="";
		 		for(int i=0;i<3;i++)
		 			temp=temp+date[i]+"-";	
		 		cmd=cmd+temp.substring(0, temp.length()-1)+"','";
		 		D=temp.substring(0, temp.length()-1);
 
		 		temp=dec+directiondec;	
		 		cmd=cmd+temp+"','";
		 		cmd=cmd+checksum+"')";
		 		System.out.println("cmd = "+cmd);
 
 
 
				Class.forName("com.mysql.jdbc.Driver");
				con = DriverManager.getConnection("jdbc:mysql://localhost:3306/NMEA","root","boumacmilan");
 
				ps = con.prepareStatement(cmd);
				System.out.println("tst1");
				ps.executeUpdate();
				System.out.println("tst2");
				JOptionPane.showMessageDialog(null, "c'est fait!!","Display Message",  JOptionPane.INFORMATION_MESSAGE);
 
			}
			catch(Exception e)
			{
				JOptionPane.showMessageDialog(null, "une erreur c'est produite les details sont: "+e,"Display Message",  JOptionPane.ERROR_MESSAGE);
			}
 
 
		}