J'ai un programme simple qui exécute une requête sur une base de données Sybase ASE en utilisant jconnect6. le programme jette un NullPointerException après itérer pour 603 dossiers de ResultSetNullPointerException at while (rs.next())
public ResultSet exec()
{
ResultSet rs = null;
try {
stmt= connection.createStatement();
rs = stmt.executeQuery(query);
} catch (SQLException ex) {
ex.printStackTrace();
}
try {
connection.close();
} catch (SQLException ex) {
ex.printStackTrace();
}
return rs;
}
public void Test()
{
ResultSet rs= exec();
if(rs!=null)
{
int i=0;
try {
while(rs!=null && rs.next()) { // NullPointerException here
System.out.println(i++);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
Les impressions de sortie de la valeur pour « i » jusqu'à ce qu'il atteigne 603, tandis que les documents recueillis sont plus de 1000 et au-dessous est l'erreur
May 13, 2014 11:43:43 AM appcomponents.OutageTest Test
SEVERE: null
java.lang.NullPointerException
at com.sybase.jdbc3.timedio.RawDbio.reallyRead(Unknown Source)
at com.sybase.jdbc3.timedio.Dbio.doRead(Unknown Source)
at com.sybase.jdbc3.timedio.InStreamMgr.a(Unknown Source)
at com.sybase.jdbc3.timedio.InStreamMgr.doRead(Unknown Source)
at com.sybase.jdbc3.tds.TdsProtocolContext.getChunk(Unknown Source)
at com.sybase.jdbc3.tds.PduInputFormatter.a(Unknown Source)
at com.sybase.jdbc3.tds.PduInputFormatter.read(Unknown Source)
at com.sybase.jdbc3.tds.TdsInputStream.read(Unknown Source)
at com.sybase.jdbc3.tds.TdsInputStream.readInt(Unknown Source)
at com.sybase.jdbc3.tds.TdsDataObject.readINTN(Unknown Source)
at com.sybase.jdbc3.tds.TdsInt.beginRead(Unknown Source)
at com.sybase.jdbc3.tds.TdsDataObject.doRead(Unknown Source)
at com.sybase.jdbc3.tds.TdsInt.getLong(Unknown Source)
at com.sybase.jdbc3.tds.CachedTdsInt.<init>(Unknown Source)
at com.sybase.jdbc3.tds.TdsInt.createCachedCopy(Unknown Source)
at com.sybase.jdbc3.tds.TdsResultSet.cacheCurrentRow(Unknown Source)
at com.sybase.jdbc3.tds.TdsResultSet.next(Unknown Source)
at com.sybase.jdbc3.jdbc.SybResultSet.next(Unknown Source)
at appcomponents.OutageTest.Test(OutageTest.java:143)
ResultSets ne sont pas des choses à transmettre autour. Assurez-vous que la connexion n'est pas non plus nulle. Je vous suggérerais d'incorporer ce resultSet dans la méthode 'void Test'. – ErrorNotFoundException
savez-vous quelles données doivent être lues lorsque le npe est lancé? Avez-vous le code source de ce pilote hdbc? – markusw
@Stanley, Vous avez raison, Il semble que ces 603 enregistrements sont ce qui a été recueilli juste avant que je ferme la connexion et le NPE est levé à cause de cette erreur. –