1. #1
    Futur Membre du Club
    Homme Profil pro
    Faculté des Sciences et Téchniques
    Inscrit en
    janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Faculté des Sciences et Téchniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2017
    Messages : 12
    Points : 8
    Points
    8

    Par défaut Conversion d'un String en char(8)

    Bonjours à vous. Comme le titre l'indique, je voudrai convertir une variable "Mat" de type String vers un Array. Je me suis basé sur ce lienlien pour faire ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Character [] str = new Character[Mat.length()];
                    for(int i =0; i<Mat.length() ; i++)
                       {
                           str[i] = Mat.charAt(i);
                           System.out.println(Mat.charAt(i));
                       } 
                    Array array = con.createArrayOf("CHAR", str);
                    System.out.println("VOICI LE RESULTAT DE str :"+Arrays.toString(str));
    mais il me lance l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.lang.AbstractMethodError: com.mysql.jdbc.Connection.createArrayOf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/sql/Array;
    Et quand je pointe sur le tableau array il me lance : "La variable array n'est pas utilisée"
    Aidez moi s'il vous plait !!!

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java/Eclipse RCP
    Inscrit en
    septembre 2009
    Messages
    10 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java/Eclipse RCP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2009
    Messages : 10 420
    Points : 24 849
    Points
    24 849
    Billets dans le blog
    2

    Par défaut

    Salut,

    C'est bien confus tout ça. Est-ce bien une question qui concerne la conversion d'une String en Array "SQL/JDBC", auquel cas, le forum approprié c'est JDBC ? Ou s'agit-il simplement de convertir la String en tableau de char (char[]], auquel cas le forum approprié c'est Général Java/Langage. Pas NetBeans en tout cas.

    Ensuite l'erreur que tu obtiens, AbstractMethodError signifie qu'il y a un problème de compilation avec les classes, comme si tu utilisais des classes de différentes versions du driver JDBC, ce qui est assez étrange. Il faudrait voir comment tu crées ton instance de Connection.

    Quant à "La variable array n'est pas utilisée", ça dit simplement que tu déclares la variable array (et que tu lui affectes éventuellement une valeur, ce qui est bien le cas), mais que tu ne te sers jamais de la valeur de cette variable. Cette variable est donc potentiellement superflue au moment où tu exécutes ton code. C'est un simple conseil qui t'invite à supprimer cette variable si elle ne sert effectivement à rien.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 257
    Points : 48 310
    Points
    48 310

    Par défaut

    Citation Envoyé par joel.drigo Voir le message

    Ensuite l'erreur que tu obtiens, AbstractMethodError signifie qu'il y a un problème de compilation avec les classes, comme si tu utilisais des classes de différentes versions du driver JDBC, ce qui est assez étrange. Il faudrait voir comment tu crées ton instance de Connection.
    La méthode createArray étant apparue en java 6 sur la cuche jdbc, il est aussi possible que tu utilise un vieux driver jdbc (1.5 ou 1.4)
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Faculté des Sciences et Téchniques
    Inscrit en
    janvier 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Faculté des Sciences et Téchniques
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : janvier 2017
    Messages : 12
    Points : 8
    Points
    8

    Par défaut

    En ce qui concerne la version du fichier jar de JDBC j'utilise: mysql-connector-connector-5.1.23-bin.jar.
    D'autre part, je suis contraint à utiliser cet array pour pouvoir l'exploiter dans l'envoi de paramètres dans une requête sql depuis java vers Mysql. Car l'insertion d'un String depuis mon JFrame vers une variable de type char(8) dans la base données ne veut absolument pas passer. Alors que les insertions dans les Varchar fonctionne parfaitement. Voici ma requête qui ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Connection con = null;         
            ResultSet rs = null;
            try {
                   Class.forName("com.mysql.jdbc.Driver").newInstance();              
                   con=DriverManager.getConnection("jdbc:mysql://localhost:3306/db?useSSL=false","root","");
                   PreparedStatement st =con.prepareStatement("USE db; INSERT INTO liens_parentaux( Nature_Du_Lien, Nom, Prenom, Matricule_Du_Proche, Matricule) VALUES( ?, ?, ?, ?, ? ); " );
                   st.setString(1, Nature_Lien);
                   st.setString(2, Nom_Parent);
                   st.setString(3, Prenom_Parent);
                   st.setString(4, Matricule_Parent);   //Ces deux matricules (Matricule_Parent et Matricule) sont de type Char(8) dans la base de données, et je les envoie sous forme de String
                   st.setString(5, Matricule);   
                   st.executeUpdate();
                }
            catch(Exception ex){ex.printStackTrace();}
    Et voici une fonction qui devrait faire une conversion de cette matricule de type string nommée "Mat" en Array de caractères pour pouvoir utiliser PreparedStatement.setArray(1, Matricule); mais elle me lance une erreur de pointeur null vers l'array:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Character [] str = new Character[Matricule.length()];
                    for(int i =0; i<Matricule.length() ; i++)
                       {
                           str[i] = Matricule.charAt(i);
                           System.out.println(Matricule.charAt(i));
                       } 
                    Array array = con.createArrayOf("CHAR", str);
                    System.out.println("VOICI LE RESULTAT DE L'ARRAY :"+array);

  5. #5
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2007
    Messages : 25 257
    Points : 48 310
    Points
    48 310

    Par défaut

    Déjà, il faut que tu retire ce use Db; dans ton prepared statement. un statement en jdbc c'est destiné à une requête. Ce n'est pas la même chose qu'un script SQL.

    Ensuite, normalement, le driver devrait accepter des string pour les colonne de type char(). C'est kif kif coté java. Quelle erreur as-tu quand tu fais ça?

    Ensuite pour le createArrayOf, effectivement mysql ne l'implémente pas dans la version 5.1.23 du driver

    http://grepcode.com/file/repo1.maven...onImpl.java#82

    Ce qui n'est pas étonnant puisque le serveur lui même ne supporte par les array. un char(8) dans mysql ce n'est pas un array, c'est une valeur unique contenant 8 charactères. Donc j'en reviens à mon message en haut, le setString devrait suffire :/

    Au pire, tu pourrais essayer
    statement.setObject(index, taString, java.Sql.Type.CHAR)
    David Delbecq Java developer chez HMS Industrial Networks AB.     LinkedIn | Google+

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

Discussions similaires

  1. conversion d'un string en char*?
    Par melleb dans le forum C#
    Réponses: 4
    Dernier message: 02/09/2008, 11h06
  2. conversion d'une string en char
    Par vulkanosaure dans le forum C++
    Réponses: 12
    Dernier message: 02/11/2007, 20h55
  3. Conversion de type string en char ?
    Par CoachMac dans le forum C
    Réponses: 18
    Dernier message: 08/08/2006, 11h20
  4. conversion d'un string en char *
    Par ferry.jules dans le forum C++Builder
    Réponses: 15
    Dernier message: 12/05/2006, 23h12
  5. (Problème avec...) conversion de std::string en char
    Par crossbowman dans le forum SL & STL
    Réponses: 7
    Dernier message: 05/03/2006, 20h54

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