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 :

Probleme insert entier - string


Sujet :

JDBC Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de keub51
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Par défaut Probleme insert entier - string
    bonjour tout le monde !

    Voila l'intrigue :

    J'ai une base de données SQL où j'ai une table " donnees " dont voici le plan :
    CREATE TABLE `donnees` (
    `Id_Donnee` int(11) NOT NULL default '0',
    `Code_Rubrique` text NOT NULL,
    `Nom_Rubrique` text NOT NULL,
    `Type` text NOT NULL,
    `Longueur` int(11) NOT NULL default '0',
    `Nature` text NOT NULL,
    `Regle_calcul` text NOT NULL,
    `Regle_Integrite` text NOT NULL,
    PRIMARY KEY (`Id_Donnee`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    J'attire votre attention sur le type de chacun des champs : tous " text " ( donc String ? ) sauf la longueur est l'id qui lui est généré automatiquement grace a une requete simple qui recupere le max+1 id de la table ...

    J'ai une JDialog qui s'affiche a l'écran pour rentrer les champ : code, nom,type..
    voici les champs :

    JButton ok_ajout;
    JButton non_ajout;

    JTextField code;
    JTextField nom;
    Choice type ;
    JTextField longueur;
    JTextField nature;
    JTextField regle1;
    JTextField regle2;

    et voici l'appel de la fonction qui doit inserer les données:
    je transfere tout d'abord les données :

    public void actionPerformed(ActionEvent E) {
    if (E.getSource()== ok_ajout)
    {
    bdd BD=new bdd();
    BD.ajoutDDD(code.getText(),nom.getText(),type.getSelectedItem(),longueur.getText(),nature.getText(),regle1.getText(),regle2.getText());
    this.dispose();
    }
    et ensuite dans un fichier qui gere exclusivement la base de données j'execute ma requete SQL :
    void ajoutDDD(String S1,String S2,String S3,String S4,String S5,String S6,String S7)
    {
    try{
    String requete = null;
    int id=this.selectId();
    requete = "INSERT INTO donnees VALUES("+id+","+S1+","+S2+",type,"+S4+","+S5+","+S6+","+S7+")";
    Statement stmt = connection.createStatement();
    stmt.executeUpdate(requete);
    }
    catch(Exception e)
    {
    System.out.println("erreur : "+e);
    }
    Lorsque les champs sont des nombres tout est bien dans le meilleur des mondes mais des que je met une tite lettre voici la tite erreur :
    erreur : com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Champ 'b' inconnu dans field list
    'b' étant ma chaine de caractere que j'ai essayé d'inserer ...

    Alors pourquoi est il aussi méchant ???

    Merci

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    Il est probable que tu essaye d inserer dans un champ de type entier une chaine de caracteres.
    fais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println(requete);
    et vois ce que ca donne quand tu l execute directement dans mysql

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 36
    Par défaut Apostrophes ?
    Dans ta requête, il me semble qu'il manque les apostrophes autour des chaînes de caractères que tu veux insérer dans la base.

    Voici comment je récrirais la ligne qui construit ta requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete = "INSERT INTO donnees VALUES("+id+",'"+S1+"','"+S2+"','type','"+S4+"','"+S5+"','"+S6+"','"+S7+"')";
    Evidemment, il faut s'assurer auparavant de faire précéder les éventuels apostrophes que pourraient contenir tes variables S1, S2 etc. par un caractère d'échappement.

    HTH

  4. #4
    in
    in est déconnecté
    Membre Expert 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
    Par défaut
    soit dit en passant, as tu pensé aux preparedStatement ? ça simplifie pas mal les choses quand il y a beaucoup de paramètres ...

Discussions similaires

  1. probleme entier -> string
    Par john93 dans le forum C++
    Réponses: 5
    Dernier message: 11/09/2007, 16h31
  2. Probleme Insert entiers - chaine de caracteres
    Par keub51 dans le forum Requêtes
    Réponses: 2
    Dernier message: 22/02/2007, 19h13
  3. probleme insert into
    Par w.b. dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/02/2005, 10h34
  4. [JDBC][MS ACCESS] probleme insertion de date
    Par darius_the_first dans le forum JDBC
    Réponses: 2
    Dernier message: 10/12/2004, 18h04
  5. probleme insertion donnée access
    Par nashouille dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/01/2004, 14h45

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