2013-06-07 3 views
-1

Je suis nouveau à utiliser mysql avec l'API JAVA. Maintenant, la façon dont j'envoie une requête ou une mise à jour est que je crée simplement une chaîne contenant toutes les lignes, puis la passe à executeQuery() ou executeUpdate(). Je l'ai trouvé gênant parce que pour passer des variables de Java je devrais terminer la citation mettre en variable une autre citation, et j'ai dû travailler avec soin autour des espaces et des guillemets intérieurs.Façons de préparer une instruction

Je me demandais:

  1. Est-il une meilleure façon d'envoyer des requêtes ou des mises à jour? J'ai essayé de faire des recherches sur les raisons de PreparedStatement mais je n'ai pas beaucoup appris.
  2. Existe-t-il un meilleur moyen de transmettre des variables?

Aussi, si vous avez des conseils pour les débutants s'il vous plaît également l'inclure. Remerciements

+1

'J'ai essayé de faire des recherches sur les raisons de PreparedStatement mais je n'ai pas beaucoup appris.» - continuez à chercher, c'est la voie à suivre. Il y a des exemples dans le forum ou sur le web. Par exemple, avez-vous regardé l'affichage sous la rubrique «Related» sur le côté droit de cette page? Nous ne pouvons pas deviner ce que vous trouvez confus au sujet des exemples que vous avez déjà trouvés. – camickr

+3

[Exemple de 'PreparedStatement' pour insert] (http://stackoverflow.com/a/11441591/1065197) Indice: vous pouvez faire la même chose pour les instructions' UPDATE', 'DELETE' et' SELECT'. –

+0

Et [juste un autre exemple] (http://stackoverflow.com/a/15122018/1065197) –

Répondre

1

Option 1: La méthode de déclaration préparée devrait fonctionner correctement.

PreparedStatement pstmt = null; 
Stirng studentUpdate = "UPDATE student SET grade = ? where id = ?"; 
try { 
    pstmt = conn.prepareStatement(studentUpdate); 
    pstmt.setString(1, "A"); 
    pstmt.setInt(2, 34); 
    pstmt.executeUpdate(); 

} catch(Exception a) { 
    a.printStackTrace(); 
} 

Option 2: Créer une procédure stockée dans votre base de données The java stored Procedure parle longuement à ce sujet (je l'ai utilisé quand j'ai eu des problèmes de guillemets simples (') avec mes cordes).

+0

+1 pour mentionner les procédures stockées – pinkpanther

+0

"Option 2" comprend vraiment "Option 1", parce que vous voudriez utiliser un ' PreparedStatement' pour transmettre des paramètres à vos procédures stockées. –

+0

Oui, c'est vrai. vous devrez utiliser des procédures stockées pour les deux. Je devrais mentionner que l'option 2 passerait juste les valeurs à DB où la logique est stockée. et l'option 1 passerait la déclaration elle-même. –

Questions connexes