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

SGBD Perl Discussion :

Requete passé en paramètre


Sujet :

SGBD Perl

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut Requete passé en paramètre
    Bonjour tout le monde,

    Voila je souhaite réaliser une connexion à ma BDD postgre à partir de mon module 'Connect.pm'. A partir d'un fichier 'test.pl' réaliser la connexion à la base en créant une connexion et en passant ma requête en paramètre.

    Connect.pm
    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
    #!/usr/bin/perl
    package Connect;
     
     
    use strict;
    use DBI;
     
    sub new ($requete)
    	{
     
    	our $connexion = {}						;						# ref à un hachage vide
    	$connexion->{host}		='127.0.0.1'	;
    	$connexion->{dbname}	='bdd'	;	
    	$connexion->{username} 	='usr'		;
    	$connexion->{password} 	='passwd'		;
    	bless($connexion)						;						# devient un objet de cette classe
    	return $connexion						;						# le renvoyer
    	}
     
    sub connect_me
    	{
    		our $connexion 	;
    		our $requete	;
    		our $sth		;
     
    		print "Requête :" . $requete ."\n";
     
    		$connexion = DBI->connect("dbi:Pg:dbname=video_club;host=127.0.0.1", 'gerant', 'hr83sb') || die DBI::errstr;
     
     
    			if (!$connexion) 
    				{
    	   				print "La connexion a échouée\n";
    				}
    				else
    					{
    						print "requete générée" ;
    						$sth = $connexion -> prepare($requete);
    						$sth-> execute();
    					}
    	}
    1;
    Test.pl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #!/usr/bin/perl
    package Test;
     
    use Connect;
    use strict;
    use DBI;
     
    # Requete pour récupérer les informations concernant les ressources
    			our  $requete = "SELECT * ";
    				$requete.= "FROM ressource ";
    				$requete.= "order by titre;";
     
    my $maConnexion = Connect->connect_me($requete) ;
    Mon problème est celui-ci je n'arrive pas à passer ma requête en paramètre

    @+

  2. #2
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Par défaut
    Salut il me semble que tu ne recupère pas la requete que tu as donne en paramètre a ta fonction;
    essaye ceci :
    [FONT=monospace][/FONT]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    sub connect_me
    	{
                   our $requete = shift;
    		our $connexion;
                   #Suite de ta fonction

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 68
    Par défaut
    Non cela ne fonctionne pas, shift récupère la première valeur de la liste passé en paramètre je suis bien d'accord.

    Mais comment passer en paramètre ma variable $requete à ma fonction connect_me de mon module Connect ?

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Bon, tu t'y prends très mal pour créer ton code objet.

    Lis cette doc

    Voici un code écrit. Inspire toi de ces codes. Lis les articles de notre rubrique Perl sur le perl objet et sur la gestion de Perl et les bases de données. C'est pour vous.

    Connect.pm
    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
    package Connect;
     
    our @EXPORT = qw(&connect_me);
    our @ISA    = qw(Exporter);
     
    use warnings;
    use strict;
     
    use DBI;
     
    sub new {    #constructeur new renvoyant un objet (le choix du nom est libre)
        my ( $class, %ParametreConnection ) = @_;
        my $connexion = {};    # ref à un hachage vide
     
        $connexion->{host}     = $ParametreConnection{host};
        $connexion->{dbname}   = $ParametreConnection{dbname};
        $connexion->{username} = $ParametreConnection{username};
        $connexion->{password} = $ParametreConnection{password};
     
        bless( $connexion, $class );    # devient un objet de cette classe
     
        #on retourne la référence vers la table de hachage ainsi contruite.
        return $class;
    }
     
    sub connect_me {
        my ( $class, $requete ) = @_;
     
        print "Ma requete : " . $requete . "\n";
     
        # Faut relire les cours de DBI de developpez.com
     
        return;
    }
    1;
    Script principal
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    use Connect;
     
    my $ObjConnect = new Connect(
        host     => '127.0.0.1',
        dbname   => 'bdd',
        username => 'usr',
        password => 'passwd',
    );
     
    $ObjConnect->connect_me("INSERT INTO TOTO values('uu');");

Discussions similaires

  1. Problème de fstream passé en paramètre
    Par Beb8 dans le forum SL & STL
    Réponses: 2
    Dernier message: 11/04/2005, 11h51
  2. [SQL server 2000] bout de requete passé en paramètre
    Par guignol dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 10/08/2004, 17h45
  3. TreeView avec requete, pb de paramètre
    Par marie253 dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/08/2004, 08h14
  4. Réponses: 6
    Dernier message: 28/05/2004, 09h39
  5. Réponses: 5
    Dernier message: 27/11/2003, 10h55

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