Jdbc et as400: un seul record

Résolu
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 - 11 nov. 2004 à 15:03
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 - 19 nov. 2004 à 08:04
Bonjour,

J'ai connecté un petit programme java à une source de données ODBC reliée à un AS400.
Cette source de donnée est configurée correctement, car l'explorateur de bases de données de Dephi permet le visu de tous les records de tous les fichiers.
Et moi avec jdbc, je ne peux lire que le premier.

Pourtant, si j'utilise une source ODBC access, ça tourne impeccable.

Si quelqu'un a une idée, je suis preneur.

Mon code:

import java.sql.*;
import java.util.*;
import javax.swing.JOptionPane;

class Base
{
private static Connection b;
public Base()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
String usr = JOptionPane.showInputDialog(null, "Utilisateur");

String pwd = JOptionPane.showInputDialog(null, "Mot de passe");
b = DriverManager.getConnection("jdbc:odbc:EssaiAS400", usr, pwd);
}
catch (Exception e)
{
System.out.println(e);
JOptionPane.showMessageDialog(null,"Erreur de connexion "+(char)TxtConstants.AAG+
" la base de donn"+(char)TxtConstants.EAA+"es",
"Class Base",JOptionPane.ERROR_MESSAGE);
System.exit(0);
}
}

public boolean getConnection()
{
return (b!=null);
}

public int retrieveSample()
{
int res = 0;
try
{
/*
DatabaseMetaData DMD = b.getMetaData();
ResultSet catalogues = DMD.getCatalogs();
while (catalogues.next())
{
ResultSet rs = DMD.getColumns(catalogues.getString(1),
null,
null,
null);
while(rs.next())
{
for(int p = 1; p < 11; ++p)
try{
System.out.print(rs.getString(p));
System.out.print(" || ");
}
catch(Exception e){
System.out.print(p);
System.out.print(" || ");
}
System.out.println("\n\n------table suivante----------\n\n");
}

}
*/
Statement stmt = b.createStatement(
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE); // La table est accessible pendat que l'utilisateur accède aux données
ResultSet rs = stmt.executeQuery("SELECT * FROM TRISTANGEN.UUALREP");
ResultSetMetaData meta = rs.getMetaData();
int colCount = meta.getColumnCount();
rs.last();
res = rs.getRow();
System.out.println(res);
byte [] buff = new byte[5];
int bidon = System.in.read();
rs.beforeFirst();
while (rs.next())
{
for(int i = 1; i<=colCount; ++i)
System.out.print(rs.getString(i)+" || ");
System.out.println(" ");
}
}
catch (Exception e)
{
System.out.println(e);
}
return res;
}

public static void main(String [] args)
{
Base base = new Base();
int i = base.retrieveSample();
System.out.println(i);
System.exit(0);
}
}

[Roger, un muscadet.]

7 réponses

cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
17 nov. 2004 à 17:43
:big) Neodante :big)

En général dans le dossier lib du JRE, ou tout répertoire contenu dans le CLASSPATH ...
@+

[Responsable www.neogamedev.com]
3
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
12 nov. 2004 à 11:05
:big) Neodante :big)

Surement ton driver ODBC qui n'est pas vraiment super compatible avec ta base ... essaye avec JDBC ce sera surement mieux .. c'est le type de ta base de données ???
@+

[Responsable www.neogamedev.com]
0
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 2
17 nov. 2004 à 14:40
La source de donnée est configurée en odbc sur ma machine et s'appelle EssAS400. Normalement, il est possible de se connecter directement dessus et c'est ce que je voudrai faire.
Mais d'abord, je commence petit.

[Roger, un muscadet.]
0
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 2
17 nov. 2004 à 15:24
En suivant le conseil concernant le pilote, j'ai téléchargé le pilote as400 sur le site IBM. Mais comment ça s'utilise? faut les mettre où les .jar?

[Roger, un muscadet.]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 2
18 nov. 2004 à 10:06
Quand je mets les .jar dans le dossier lib ça marche pas. Pour afficher le classpath, j'ai jamais fait, mais la commande c'est bien
javac -classpath?

Si c'est ça, ma machine veut pas, elle dit aue je peux pas lire la mémoire.

[Roger, un muscadet.]
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
18 nov. 2004 à 10:51
:big) Neodante :big)

Hein quoi ?? Elle ne peut pas lire la mémoire ??? Peux-tu me mettre le message complet ??? Regarde dans tes variables d'environnement Windows (ou autre) et ragarede celle nommée 'classpath' et regarde le chemin ... normalement c'est le répertoire lib de ton jre/jdk (attention à le mettre partout !! Si tu as un JDK ce qui ne m'étonnerais pas copie le en plus dans le rep jdk/jre/lib !) ou au pire le rep /lib/ext ...
@+

[Responsable www.neogamedev.com]
0
libeur Messages postés 36 Date d'inscription jeudi 5 août 2004 Statut Membre Dernière intervention 24 décembre 2004 2
19 nov. 2004 à 08:04
En ligne de commande, j'ai pas réussi, mais en configurant les options de projet dans Jcreator, ça passe, et du coup, je récupère le contenu des tables en entier.

Pour le pb de mémoire, je soupçonne Delphi parce qu'il cherche à déboguer sur l'erreur de lecture.

Pour l'instant, je ne vais plus bosser en java. On va adapter un prog Access existant (no comment) en passant par ODBC.

[Roger, un muscadet.]
0
Rejoignez-nous