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

MS SQL Server Discussion :

Espaces ajoutés à la fin d'un varchar (requête depuis J2EE)


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Par défaut Espaces ajoutés à la fin d'un varchar (requête depuis J2EE)
    Bonjour à tous,
    J'utilise une interface Java qui fait des requetes d'insertion avec ODBC sur ma base de données MS SQL Server.

    Tout marchait bien avant mais après avoir recréé à la main ma table sur une autre machine j'ai l'erreur suivante :

    Une suite d'espace est ajoutée à la fin de tous les string insérés, par exemple 'toto' inséré dans un varchar(10) donne 'toto ' dans la base de données.
    Etrangement je n'ai aucun problème si j'éxécute la requete directement dans l'analyseur de requetes SQL Server (2000)

    Je pense à une modification de configuration de ma base qui n'a pas été repercutée lorsque je l'ai migrée. Ou bien des tables système altérées.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 227
    Billets dans le blog
    25
    Par défaut
    Comparer vos jeux de cvaractères et vos attributs de connexion
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Par défaut
    (il y a bcp de serveurs identiques pour cette application, ce sont des backups)

    Côté Java je ne pourrai rien changer, l'application est multi clients, et marche d'ailleurs très bien sur d'autres base de données (meme config).

    Il s'agit simplement d'un de mes serveurs SQL Server, qui pour la meme instruction d'INSERT ou d'UPDATE, me rajoute des espaces pour compléter le varchar à sa valeur maximum.
    Le probleme se situe a priori côté BD.

    Qu'entendez-vous par "jeux de caractères", mes tables sont à priori correctes, un varchar(20) sans valeur par défaut. Elles sont d'ailleurs créées à partir d'un script SQL généré à partir d'autres tables sur un autre serveur qui elles fonctionnent.

    Seule la base de données a été recréée à la main sans script, avec surement une différence de configuration quelque part.

  4. #4
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Par défaut
    Remarque :

    Mon instruction Java ressemble à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    PreparedStatement pstmt = null;
     
    String thePassword = 'exemple';
     
    pstmt = conAdminInsertServlet.prepareStatement("INSERT INTO myTable (Password) VALUES (?)");
    pstmt.setString(1,thePassword);
    pstmt.executeUpdate();
    pstmt.close();
    Si au contraire je mets directement le champ password dans la chaîne SQL sans passer par la méthode setString je n'ai pas d'erreur à l'insertion dans ma base.

    Je reprécise quand même que ca marche sur une autre base de données non créée manuellement.

    Il y aurait donc un bug avec setString() et le driver ODBC pour MS-SQL Server dans un cas particulier de configuration de ma base et/ou de mes tables

  5. #5
    Membre averti
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Par défaut
    Je continue mon investigation :

    Entre la Base qui marche et celle qui ne marche pas, j'ai une différence sur les champs varchar, qui ont le status 16 dans la base qui ne marche pas, et le status 0 dans la base qui marche.
    On trouve cette information dans la table syscolumns.

    A priori cela concerne le fait de compléter par des blancs un varchar. Une idée de comment modifier cela et proprement ?

Discussions similaires

  1. ajouter des espace a la fin d'une chaine de caractaire
    Par bforzeus dans le forum Langage
    Réponses: 3
    Dernier message: 04/07/2013, 10h50
  2. Ajout d'une ligne "total" en fin de résultat de requête
    Par perdeak dans le forum Langage SQL
    Réponses: 11
    Dernier message: 06/09/2011, 17h12
  3. Réponses: 1
    Dernier message: 09/02/2007, 09h45
  4. [Unix KSH] Ajout caractère fin de ligne dans fichier
    Par -COil- dans le forum Autres langages
    Réponses: 1
    Dernier message: 04/05/2006, 16h06
  5. enregistrement d'espaces a la fin des champs
    Par virJnie dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 19/05/2005, 13h55

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