Bonjour
J'ai maintenant une couche driver qui marche, je travaille sur la couche de plus haut niveau et j'ai une question à ce sujet:
Dans un premier temps je vous net le code:
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
 
		   pListText = new ArrayList<Structure.ElementWork>();
		   String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
		   iNbResultFound = 0;
		   iNbResultFound = InterbaseManager.ExecuteSelectRequest( cmd);
		   try
		   {
			   while( InterbaseManager.myReader.next());
			   {
				   WorkElement.Id = InterbaseManager.myReader.getInt( 0);
				   WorkElement.wsText = InterbaseManager.myReader.getString( 1);
				   pListText.add(WorkElement);
			   }
		   }
		   catch(Exception ex)
		   {
			   ex.printStackTrace();
		   }
puis le message d'erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] Index de descripteur non valide
	at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbc.SQLGetDataInteger(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getDataInteger(Unknown Source)
	at sun.jdbc.odbc.JdbcOdbcResultSet.getInt(Unknown Source)
	at com.all4tec.matelo.linguistique.wizards.MissionDatabaseManager.ReadWork(MissionDatabaseManager.java:81)
	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard.RecupereNomDesFichier(LinguistiqueImportWizard.java:61)
	at com.all4tec.matelo.linguistique.wizards.LinguistiqueImportWizard$1.run(LinguistiqueImportWizard.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Je vous demande comment adresser les champs dans la boucle while du code.
J'ai essayé dans un premier temps de partir à 1 puis j'ai essayé de partir à 0
Quand on compte à partir de 1 on récupère:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
java.sql.SQLException: [Microsoft][Gestionnaire de pilotes ODBC] État de curseur non valide
à Noter que dans la base siIdDocument est le premier enregistrement et vcDocument est le deuxième
J'ai modifié le programme pour me rendre indépendant de la question "est ce que on doit dire sur l'index":
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
 
		   pListText = new ArrayList<Structure.ElementWork>();
		   String cmd = "SELECT siIdDocument, vcDocument FROM T_WORK_INFORMATION WHERE siIdStateDocument = 3";
		   iNbResultFound = 0;
		   iNbResultFound = InterbaseManager.ExecuteSelectRequest( cmd);
		   try
		   {
			   while( InterbaseManager.myReader.next()&& iNbResultFound > 0);
			   {
				   String nom;
				   nom = "siIdDocument";
				   int index = InterbaseManager.myReader.findColumn(nom);
				   WorkElement = new Structure.ElementWork();
				   WorkElement.Id = InterbaseManager.myReader.getInt( index);
				   index++;
				   WorkElement.wsText = InterbaseManager.myReader.getString( index);
				   pListText.add( WorkElement);
				   iNbResultFound--;
			   }
		   }
		   catch( Exception ex)
		   {
			   ex.printStackTrace();
			}
mais cette méthode n'a rien changé le premier index est positionné a 1 et il part en carafe( en exception)
Je me demande si on ne doit pas coder int index dans un type plus spécialisé?
Celui qui m'aidera sera