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

MySQL Discussion :

MysqlDatareader me retourne un NULL


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 50
    Par défaut MysqlDatareader me retourne un NULL
    Bonsoir,

    Je travaille en C# et j'utilise la dernière version de MySql pour Windows et Visual Studio 2015.

    Je me suis créé une requête toute simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TableName WHERE Id=2
    Lorsque j’exécute celle-ci avec le Workbench de MySql, j'ai le résultat voulu.
    Par contre, sous C#, avec MySql en client, j'ai un retour de valeur NULL. J'utilise MySqlDataReader, ma commande est celle donnée en exemple et la connection est établie avec ma base de données.

    Mon bout de code en C# est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            MySqlCommand cmd = new MySqlCommand(scommand, Database.Connection);
                        MySqlDataReader reader = cmd.ExecuteReader();
    A l'issue, j'utilise une boucle pour lire les données retournées.

    Mon problème est que "reader" vaut NULL sous C#.

    Auriez-vous une piste ?

    J'ai un moyen simple d'arriver au résultat escompté, je récupère tous les champs dans "reader" (SELECT * FROM TableName) puis je lance une boucle avec C# sur "reader". Mais je n'utilise pas le potentiel de SQL et c'est dommage.

    Merci

  2. #2
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 881
    Par défaut
    Salut Dokare.

    Si cela concerne C#, il faut poser la question dans le forum consacré à C#.
    Ici, on traite que des questions technique sur MySql.

    @+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 50
    Par défaut
    Bonsoir...

    Mis à part la réponse d' Artemus24 me disant d'aller voir là bas si j'y suis (gentillement bien entendu)...

    Est-ce que , par le BIAIS d'un langage de programmation, vous n'auriez pas eu ce genre de mésaventures ?
    C'est à dire un retour NULL suite à MysqlDataReader alors que vous savez pertinemment le contraire...

    Soit il y a un problème avec MysqlConnector (donc MySql) ou bien est-ce une incompréhension de C# ?

    Pour ma part, je me porte sur MySql, enfin c'est juste un avis qui selon la démonstration que vous apportez peut varier...

    Bonne soirée.

    PS: sous C#, il n'y a pas de rubrique dédié à MySql... C'est balot...

    Bye

  4. #4
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 881
    Par défaut
    Salut Dokare.

    Ce n'est pas que je ne veux pas te répondre, mais je ne connais pas C#.
    En effet, j'utilise "Mysql Connector C 6.1" ! Je fais du 'C' et du 'C++'.

    Le problème que j'ai rencontré, ce sont les espaces dans le nom du chemin.
    --> "C:\Program Files (x86)\MySQL\MySQL Connector C 6.1".

    Pour résoudre cela, j'ai créé deux liens symboliques pour récupérer d'une part le répertoire lib et d'autre part le répertoire include dans mon makefile.

    --> ADDS = "C:/MinGW/lib/MySql/libmysql.lib"
    Pour le répertoire : "C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib".
    Qui a été rebaptisé en "C:/MinGW/lib/MySql/".

    --> INC2 = -I"C:/MinGW/include/MySql"
    Pour le répertoire : "C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\include".
    Qui a été rebatisé en : "C:/MinGW/include/MySql/".

    Sans cela, je ne pouvais pas utiliser les api !

    Et voici mon makefile :
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    # Project : Projet
    # Application : C & Console
     
    # =============================== #
    #   Déclaration des Executables   #
    # =============================== #
     
    CC		= mingw32-gcc.exe
    RM		= rm -f
    WINDRES = windres.exe
     
    # ========================== #
    #   Déclaration des Objets   #
    # ========================== #
     
    SRC		= Sources/main.c
    RC      = Projet/Private.rc
     
    OBJ		= main.o
    BIN		= Projet/Projet.exe
    RES     = Projet/Private.res
     
    # ================================= #
    #   Déclaration des Bibliothèques   #
    # ================================= #
     
    LIB1	= -L"C:/MinGW/lib"
    LIB2	= -L"C:/MinGW/lib/MySql"
     
    LIBS	= $(LIB1) $(LIB2)
     
    ADDS	= "C:/MinGW/lib/MySql/libmysql.lib"
     
    # ============================ #
    #   Déclaration des Includes   #
    # ============================ #
     
    INC1    = -I"C:/MinGW/include"
    INC2	= -I"C:/MinGW/include/MySql"
     
    INC3    = -I"Projet"
    INC4    = -I"Sources" 
     
    INCS    = $(INC1) $(INC2) $(INC3) $(INC4)
     
    # ============================== #
    #   Déclaration des Paramètres   #
    # ============================== #
     
    PARM	= -mconsole
    FLAG	= -ansi -Wall
     
    # ==================================== #
    #   Compilation et Edition des liens   #
    # ==================================== #
     
    all: clean $(BIN) after
     
    clean:
    	$(RM) $(OBJ)
    	$(RM) $(BIN)
    	$(RM) $(RES)
     
    $(BIN): $(OBJ) $(RES)
    	@ echo
    	@ echo linkedit
    	@ echo
    	$(CC) $(OBJ) $(RES) $(ADDS) -o $(BIN) $(LIBS) $(PARM)
     
    $(OBJ): $(SRC)
    	@ echo
    	@ echo compilation
    	@ echo
    	$(CC) -c $(SRC) -o $(OBJ) $(INCS) $(FLAG)
     
    $(RES): $(RC)
    	@ echo
    	@ echo Ressources
    	@ echo
    	$(WINDRES) -i $(RC) $(INCS) --input-format=rc -o $(RES) -O coff 
     
    after:
    	@ echo
    	$(RM) $(OBJ)
    	$(RM) $(RES)
    Pour le reste, je ne voie pas où se trouve la difficulté.
    Tu peux utiliser le compte root, pour accéder à ta base de données.
    Dans mon cas, j'ai préféré utiliser un compte ayant moins de permissions, juste ceci : "select, insert, update et delete".

    As-tu un message d'erreur ?

    @+

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 50
    Par défaut
    Bonsoir...

    Je te répond un peu tardivement Artemus24...

    Avec Visual Studio et C#, je ne peux loupé la déclaration des références externes (lib et includes pour toi Artemus24). Le problème ne vient pas de là car elles sont bien déclarées.

    La syntaxe de ma commande SQL est bien validée sous le WorkBench de MySql, mais avec C#, il en va autrement.

    Bon exemple de commande qui fonctionne et que je récupère avec MySqlDataReader :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table_administratif
    ...
    Là, j'ai tous mes records.

    Par contre, dès que je met un 'WHERE', ben j'ai plus rien ! Par contre sous le WorkBench, j'ai mon résultat.

    J'en perd mon la latin...

    Merci pour votre aide...

    Davy

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 50
    Par défaut [Résolu] et encore...
    Bon,

    je me suis créé un nouveau projet avec une autre base de donnée.
    Et miracle, ça marche...

    Bon, les voies de l'informatique sont impénétrables...

    Merci...

    Mystère +1
    Compréhension -1

  7. #7
    Membre prolifique Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 881
    Par défaut
    Salut Dokare.

    La seule solution que je voie à ton problème concerne les permissions sous MySql.
    The primary function of the MySQL privilege system is to authenticate a user who connects from a given host and to associate that user with privileges on a database such as SELECT, INSERT, UPDATE, and DELETE.
    Mais je n'ai jamais vu une permission qui interdit le "where".

    Tu as raison, parfois il se passe des choses bizarres, même en faisant tout correctement.

    J'ai eu un problème totalement incompréhensible.
    Je faisais un accès avec permission à une base de données pour faire un simple select sous php.
    Je fais un accès normal à ma page web, et j'obtiens mon résultat.
    Je fais un premier "refresh" de la même page, sans sortir, et j'ai une erreur de permission me disant que je n'ai pas le droit d'y accéder.
    Je fais un deuxième "refresh", et là, ça fonctionne à nouveau. Et ainsi de suite, en alternance !

    Je change de compte et là, tout redevient normal. Comme toi, j'ai rien compris de ce bug.

    @+

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

Discussions similaires

  1. [PB9] En exécutable, ImportFile retourne toujours NULL
    Par a_zoubir dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 20/12/2008, 19h02
  2. Calcul d'une somme qui ne retourne pas NULL
    Par Pilloutou dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/09/2007, 11h56
  3. [Class] Constructeur, retourner un "null"
    Par Nadd dans le forum C#
    Réponses: 10
    Dernier message: 14/07/2007, 05h17
  4. [Servlet] pb multipart/form-data retourne valeur null
    Par Doumeasse38 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 12/05/2006, 08h46
  5. Réponses: 2
    Dernier message: 30/03/2006, 16h18

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