J'utilise postgresql-8.3-603.jdbc4.jar avec jdk 1.6 dans mon application pour effectuer les opérations db. Je reçois parfois les exceptions ci-dessous et le redémarrage permet d'éviter temporairement ces exceptions. Org.postgresql.util.PSQLException: Le nom de la colonne sender_id n'a pas été trouvé dans ce ResultSet.PgSQL Exception: nom de colonne introuvable
à org.postgresql.jdbc2.AbstractJdbc2ResultSet.findColumn (AbstractJdbc2ResultSet.java:2502) à org.postgresql.jdbc2.AbstractJdbc2ResultSet.getString (AbstractJdbc2ResultSet.java:2345) à org.apache.commons.dbcp.DelegatingResultSet.getString (DelegatingResultSet.java:225) à org.apache.commons.dbcp.DelegatingResultSet.getString (DelegatingResultSet.java:225) à com.netcore.bulkrequest.db.FeedDAO.setFeedDetails (FeedDAO.java:142) à com. netcore.bulkrequest.feed.Feed.getInstance (Feed.java:37) à com.netcore.bulkrequest.core.BulkRequestTask. (BulkRequestTask.java:86) à com.netcore.bulkrequest.core.BulkRequestValidate.getBulkRequestTaskObject (BulkRequestValidate .java: 104) à com.netcore.bulkreq uest.core.BulkRequestValidate.run (BulkRequestValidate.java:57) à java.util.concurrent.ThreadPoolExecutor $ Worker.runTask (ThreadPoolExecutor.java:886) à java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor. java: 908) à java.lang.Thread.run (Thread.java:619)
Voici l'extrait de code:
public class FeedDAO { /** * objet pool de connexions de base de données */ private final DBContext dbc;
private final Feed feed;
public static final String SENDER_ID_ATTRIBUTE = "sender_id";
/**
* Constructor
*
* @param dbc
* @param feed
*/
public FeedDAO(DBContext dbc, Feed feed) {
this.dbc = dbc;
this.feed = feed;
}
setFeedDetails public void() throws SOLException {
String feedDetailsQuery = "SELECT a.priority, b.keyword, b.welcome " +
" FROM feed AS a, pub_feed_info AS b " +
" WHERE a.resource_id = b.resource_id AND b.resource_id = ?";
String senderIdQuery = "SELECT b.attribute_value AS " +
SENDER_ID_ATTRIBUTE + " FROM " +
"attribute_master AS a, feed_attributes AS b " +
"WHERE a.attribute_id = b.attribute " +
" AND a.attribute_name='" + SENDER_ID_ATTRIBUTE + "' " +
" AND feed_id = ?";
Connection con = null;
PreparedStatement fdStmt = null;
PreparedStatement siStmt = null;
try {
con = dbc.getConnection();
//Get the feed details
fdStmt = dbc.getPreparedStatement(con, feedDetailsQuery);
fdStmt.setInt(1, this.feed.getFeedId());
fdStmt.execute();
ResultSet fdResults = fdStmt.getResultSet();
while (fdResults.next()) {
String keyword = fdResults.getString("keyword");
String welcomeMsg = fdResults.getString("welcome");
int priority = fdResults.getInt("priority");
if(null != keyword) {
this.feed.setKeyword(keyword);
} else {
this.feed.setKeyword(String.valueOf(this.feed.getFeedId()));
}
this.feed.setWelcomeMsg(welcomeMsg);
this.feed.setPriority(priority);
}
//Get the sender id
siStmt = dbc.getPreparedStatement(con, senderIdQuery);
siStmt.setInt(1, this.feed.getFeedId());
if(siStmt.execute()) {
ResultSet siResults = siStmt.getResultSet();
while(siResults.next()) {
String senderId = siResults.getString(SENDER_ID_ATTRIBUTE);
this.feed.setSenderId(senderId);
}
} else {
this.feed.setSenderId(Feed.DEFAULT_SENDER_ID);
}
} catch (SQLException ex) {
throw ex;
} finally {
if (fdStmt != null) { fdStmt.close(); }
if (siStmt != null) { siStmt.close(); }
if (con != null) { con.close(); }
}
}
}
Quelqu'un peut-il me aider s'il vous plaît trouver le correctif permanent?
Merci, Mani
Salut Alex, Edité la question d'ajouter l'extrait de code .. –
Je ne sais pas comment 'sender_id' peut être moins que peut-être il manque' feed_attributes' manque un champ 'attribute_value', mais même alors je Attendez-vous à une erreur antérieure, pas une sur getString. Hmmm - comment va ton schéma? –
CREATE TABLE feed_attributes ( feed_id entier NOT NULL, attribut entier NON NULL, attribute_value text NOT NULL ); En outre, je suis sûr que sender_id a une certaine valeur lorsqu'il lance cette erreur. Alors que googling pour trouver une solution, il suffit de venir ce lien: http://archives.postgresql.org/pgsql-jdbc/2005-06/msg00086.php mais pas sûr que c'est la cause –