IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Une "(" passé dans mon PreparedStatement


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Une "(" passé dans mon PreparedStatement
    Bonjour,

    J'ai mis en place une application qui se connecte a une base de données et insère des données via un PreparedStatement. Ses données sont dans un fichier.
    Une de ses données contient des parentheses '()'

    En clair si ma variable dans mon fichier est égal à (Doc)toto je dois insérer (Doc)toto.

    Mais le le fait qu'il y ait une parenthése pose problème pour mon PréparedStatement.

    Voici mon insert "insert into XXXXX_XXXXX (x,x,x,x,x,x,x,x,x,x,x,x,x,x) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)"

    J'ai essayé de faire \(Doc\) mais cela n'a pas fait grand chose.

    Quelqu'un aurrait une idée?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    C'est normalement géré par les PreparedStatement ! Tu utilises bien la méthode setString() ???

    Sinon fais voir ton code...

    a++

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut Reponse
    En fait, je fais un setObjet dans mon PreparedStatement
    car je dois aussi gérer le cas ou c des timsestamp.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    	/**
             * Méthode qui remplit un preparedStatement. Apparement db2 ne supporte le
             * setNull.
             */
    	public PreparedStatement bindPreparedStatement(PreparedStatement _stmt,
    			Object[] _o) throws SQLException, BatchDataException {
    		PreparedStatement pst = null;
    		try {
    			pst = _stmt;
     
    //			for (int i = 0; i < _o.length; i++) {
    //				System.out.println("i " + i + " Object " + _o[i]);
    //			}	
     
    			for (int i = 0; i < _o.length; i++) {
    				//System.out.println("i " + i + " Object " + _o[i]);
    				if (_o[i] == null)
    					pst.setObject(i + 1, "");
    				else
    					pst.setObject(i + 1, _o[i]);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    			erreur.add("Erreur des passages des arguments au PreparedStaement "
    					+ e.toString());
    			error("Erreur des passages des arguments au PreparedStatement ", e);
    		}
    		return pst;
    	}
     
    	// public int[] execBatch3(Connection con, String sql, List tableauObjet )
    	// throws SQLException,
     
    	public int execBatchPreparedStatement(Connection con,
    			PreparedStatement pstmt, String nom_table, Object[] tableauObjet)
    			throws SQLException, BatchDataException {
    		// TODO Auto-generated method stub
    		int rest = -1;
    		PreparedStatement tmp = null;
    		try {
    			//System.out.println( tableauObjet ); 
    			tmp = pstmt;
    			tmp = bindPreparedStatement(pstmt, tableauObjet);
    			rest = tmp.executeUpdate();
    		} catch (SQLException e) {
    			// error("Probleme lors de l'insertion ", e);
    			// throw new BatchDataException("Erreur lors de l'insertion du blog
    			// dans la table "+ nom_table + " " + e.toString() );
    			erreur.add("Erreur lors de l'insertion du blog dans la table "
    					+ nom_table + "\n" + e.toString());
    			error("Probleme lors de l'insertion dans la table " + nom_table
    					+ "\n", e);
    		}
    		return rest;

  4. #4
    in
    in est déconnecté
    Membre expérimenté Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Points : 1 718
    Points
    1 718
    Par défaut
    si c'est le nom de ta colonne qui est (Doc), tu devras surement utiliser les ? pour mettre à jour le nom des colonnes dans ta requete.

    Le preparedStatement est fait pour ce genre de truc, il gère tout seul les caractères spéicaux ... si tu l'utilise correctement il ne devrait pas y avoir de problèle ...
    "If email had been around before the telephone was invented, people would have said, 'Hey, forget email! With this new telephone invention I can actually talk to people!"

    Besoin d'une nouvelle méthode pour développer ? -> http://www.la-rache.com/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 135
    Points : 46
    Points
    46
    Par défaut
    Effectivement tu avais raison adiGuba le setString a bien corrigé mon probleme.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer une liste de string dans un preparedstatement
    Par thierryler dans le forum JDBC
    Réponses: 6
    Dernier message: 13/03/2008, 14h30
  2. une base de donnees dans mon site web
    Par isnkenzo dans le forum Débuter
    Réponses: 1
    Dernier message: 11/02/2008, 14h49
  3. Réponses: 2
    Dernier message: 18/04/2007, 21h32
  4. Utiliser une ligne de commande dans mon programme.
    Par Someonelse dans le forum MFC
    Réponses: 3
    Dernier message: 20/06/2006, 16h11
  5. [C#] Comment mettre une ligne en couleur dans mon DataGrid ?
    Par vandeyy dans le forum Windows Forms
    Réponses: 7
    Dernier message: 19/07/2004, 10h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo