2011-11-02 8 views
0

Salut à tous, Ceci est mon code,déclaration de mise à jour en java

public static boolean updateDB() { 
    Connection cn = null; 
    PreparedStatement pstmt = null; 
    ResultSet rs = null; 
    boolean result = false; 
    int number; 
    String insetSQL ="update quan set ten_quan='lin' where id=1"; 
    try { 
    cn = LocalDatabasePooling.getInstance().getConnection(); 
    pstmt = cn.prepareStatement(insetSQL); 
    pstmt.executeUpdate(); 
    result = true; 
    } catch (SQLException e) { 
    e.printStackTrace(); 
    } finally { 
    if (rs != null) { 
     try { 
     rs.close(); 
     } catch (SQLException sqle) { } 
    } 
    if (pstmt != null) { 
     try { 
     pstmt.close(); 
     } 
     catch (SQLException sqle) { } 
    } 
    if (cn1 != null) { 
     try { 
     cn1.close(); 
     } 
     catch (SQLException sqle) { } 
    } 
    } 
    return false; 
} 

Le code ci-dessus correct? Mais quand je debug, j'ai vu que la ligne

number = pstmt.executeUpdate(); 

n'a pas été exécuté et le code ci-dessous, il n'a pas été exécutée aussi.

quand j'ajoute regarde

pstmt.executeUpdate(); 

J'ai vu cette info

erreur

(lors de l'évaluation

Quel est le problème?

+0

Pourquoi avez-vous changé/corriger le code dans la question sans laisser des commentaires sur ma réponse? Maintenant, ma réponse n'a pas beaucoup de sens pour ceux qui n'ont pas lu la question originale. – BalusC

Répondre

2

Apparemment, une exception a été été lancée ce qui a été complètement ignoré par votre code Quelque chose comme:

try { 
    // Your code was here. 
} catch (SQLException e) { 
    // But you didn't put anything here. 
} 

Vous devriez au moins log/imprimer la stacktrace

try { 
    // Your code was here. 
} catch (SQLException e) { 
    e.printStackTrace(); 
} 

Ou, mieux encore, il suffit de jeter.

public SomeObject someMethod() throws SQLException { 
    try { 
     // Your code was here. 
    } finally { 
     // Surely close resources here. 
    } 
} 

exceptions contiennent une foule d'informations sur la cause du problème et ils ne doivent pas être ignorés, sauf si vous savez vraiment ce que vous faites.

0

pstmt.executeUpdate(); pas exécuté - C'est OK. Mais qu'est-ce que vous obtenez? Une trace d'exception dans la ligne de commande? Essayez d'ajouter try catch block comme mentionné BalusC et réexécutez le problème. Il peut y avoir un problème avec votre sql, comme la table n'existe pas, le nom de la colonne est incorrect ou votre datasouce n'a pas retourné la connexion du tout. vous pourriez obtenir une exception de pointeur nul.

0

Vous devez mettre? dans l'instruction, insérez les valeurs dans prepareStatement.

Si elle est simple SQL « droit » à exécuter, il n'y a pas besoin d'utiliser un PreparedStatement

Questions connexes