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

Connexion aux bases de données Firebird Discussion :

erreur bigint requete Employee.fdb via AdoDb


Sujet :

Connexion aux bases de données Firebird

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 28
    Points
    28
    Par défaut erreur bigint requete Employee.fdb via AdoDb
    Bonjour,
    j'essaye de me mettre à FireBird via PHP en utilisant AdoDb.

    Mais lorsque je me connecte à la base exemple de firedird j'ai l'erreur suivante:

    Dynamic SQL Error SQL error code = -804 Data type unknown Client SQL dialect 1 does not support reference to BIGINT datatype
    Fatal error: Call to a member function on a non-object in C:\apache\htdocs\test_adodb\getdata.php on line 30

    Ce qui m'amène à me poser qq question what is le "dialect" dans firebird?
    Et une autre: What is le "domain" dans firebird?

    Ci dessous mon code d'interogation (from le tutoriel trouvé sur le site)
    Comprends pas pourquoi ca ne marche pas.... j'ai installé IBwebadmin et l'accès à la base se passe tres bien!
    Merci pour votre aide, et Bonne année 2005.


    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
    <?php
    include('../adodb/adodb.inc.php');
     
     
    switch ($_POST[database]){
    	case 'interbase':
    		$conn = &ADONewConnection('ibase');
    		$conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb','SYSDBA','masterkey', "");
    	break;
    	case 'mysql':
    		$conn = &ADONewConnection('mysql');
    		$conn->PConnect('localhost','','','mybase');
    	break;
    	case 'access':
    		$conn = &ADONewConnection('access');
    		$conn->PConnect('Employee');
    	# utilisation du DSN, déclaré dans le panneau de configuration
    	break;
    }
     
    if ( isset($_POST[database]) ) {
    	$recordSet = &$conn->Execute('SELECT * FROM EMPLOYEE');
    	if ( !$recordSet )
    		echo "ici = ".$conn->ErrorMsg();
    	else
    		while (!$recordSet->EOF) {
    			echo $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>';
    			$recordSet->MoveNext();
    		}
    		$recordSet->Close(); // optionnel
    		$conn->Close(); // optionnel
    } else {
    	echo 'vous devez spécifier une base de données !';
    }
     
    ?>
    [/code]

  2. #2
    MPB
    MPB est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2004
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé ce lien en cherchant un peu sur google car je ne connaissait pas AdoDB :
    http://phplens.com/lens/adodb/docs-adodb.htm

    J'ai l'impression que tu devrais plutot mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $conn = &ADONewConnection('firebird');
    pour te connecter à une base FireBird, je ne sais pas essai déjà ça

  3. #3
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Le dialect 1 est le langage utilisé pour interbase < 6 et donc toutes les nouvelles bases de données doivent utiliser le dialect 3 pour pouvoir bénéficier des nouvelles fonctionnalitées (nouveaux type de données).

    Donc pour se connecter à employee.fdb il faut spécifier qu'on se connecter en utilisant le dialect 3.

    BIGINT étant un type n'existant pas dans le dialect1.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    Alors là je comprends plus rien j'ai fait une toute petite modif qui relève du hasard.... vous l'avez vue??

    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
     
     
    switch ($_POST[database]){
    	case 'interbase':
     
    		$conn = &ADONewConnection('ibase');
    		$conn->debug=1; 
    		$conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?','SYSDBA','masterkey',"");
     
    	break;
    	case 'mysql':
    		$conn = &ADONewConnection('mysql');
    		$conn->PConnect('localhost','','','mybase');
    	break;
    	case 'access':
    		$conn = &ADONewConnection('access');
    		$conn->PConnect('Employee');
    	# utilisation du DSN, déclaré dans le panneau de configuration
    	break;
    }
     
    if ( isset($_POST[database]) ) {
    	$recordSet = &$conn->Execute('SELECT * FROM EMPLOYEE');
    	if ( !$recordSet )
    		echo $conn->ErrorMsg();
    	else
    		while (!$recordSet->EOF) {
    			echo ' '.$recordSet->fields[0].' '.$recordSet->fields[1].'<BR>';
    			//print_r( $recordSet->FetchRow());
     
    			$recordSet->MoveNext();
    		}
    		$recordSet->Close(); // optionnel
    		$conn->Close(); // optionnel
    } else {
    	echo 'vous devez spécifier une base de données !';
    }
    Non toujours pas....

    il y a un ? dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?','SYSDBA','masterkey',"");
    C'est tout et ca marche!!
    J'ai bien cherché à ajouter

    comme dans le fichier d'aide d'adodb, mais cela n'a rien changé, et c'est par hasard que le ? est resté et cela fonctionne...

    Sinon pour le domain, de quoi s'agit il sous firebird?

  5. #5
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Essayez ca :
    [quote="jflebegue"]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $conn->PConnect('127.0.0.1:C:\Firebird\examples\employee.fdb?dialect=3','SYSDBA','masterkey',"");
    Sinon les domaines permettent de définir des types de données spécifiques à votre base.

    Par exemple si vous avez dans plusieurs tables une colonne signifiant la même chose exemple un prenom au lieu de définir vos deux colonnes avec un varchar(30)

    Vous définissez un domaine s'appelant PRENOM de type VARCHAR(30) et vous utilisez ce domaine dans la définition de vos colonnes PRENOM.

    Un changement du domaine en varchar(40) changera toutes les colonnes utilisant ce domaine.

    Vous pouvez créer des domaines avec des contraintes (des tests). etc.

    Consultez la doc pour en savoir plus vous verez c'est très utile.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    Bonjour,

    J'ai bien essayé de mettre ceci:
    mais cela donnait toujours des erreurs

    en l'occurence celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Warning: ibase_pconnect(): I/O error for file "C:\Firebird\examples\employee.fdb?dialect=3" Error while trying to open file Syntaxe du nom de fichier, de répertoire ou de volume incorrecte. in C:\apache\htdocs\adodb\drivers\adodb-ibase.inc.php on line 69
    127.0.0.1:C:\Firebird\examples\employee.fdb?dialect=3: I/O error for file "C:\Firebird\examples\employee.fdb?dialect=3" Error while trying to open file Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
    J'ai un peu de mal à tout comprendre... et je vous assure que le ? seul fait que ca fonctionne....
    Je vais me diriger vers le code PHP du fichier adodb-ibase.inc.php on line 69 pour voir ce qui s'y passe....

    SI je découvre qq chose je vous tiens au courant dans ce post.
    Merci,
    JF

  7. #7
    Membre expert
    Avatar de Barbibulle
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    2 048
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 2 048
    Points : 3 342
    Points
    3 342
    Par défaut
    Ah apparemment avec PConnect on peux pas mettre de parametres de cette façon.
    Par contre il y a une autre methode de connexion :
    Cf l'exemple dans le lien donné par MPB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $dsn = 'firebird://user:pwd@localhost/mydb?persist&dialect=3';  # persist is optional	
    $conn = ADONewConnection($dsn);  # no need for Connect/PConnect

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 40
    Points : 28
    Points
    28
    Par défaut
    Merci,

    Voici ce que j'ai finalement utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $dsn = 'firebird://SYSDBA:masterkey@localhost:c://firebird/examples/employee.fdb?dialect=3';  # persist is optional   
    $conn = &ADONewConnection($dsn);

    Le mystère du ? persiste....

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

Discussions similaires

  1. [XL-2010] Requête SQL via ADODB - Erreur syntaxe
    Par PaulG2B dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/08/2014, 14h44
  2. [AC-2003] erreur 3190 en exportant une requete vers excel via DoCmd
    Par dg6969 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 17/06/2014, 12h51
  3. Accès à une base de donnée Sybase via ADODB
    Par pinpin44 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/10/2005, 17h14
  4. [TRANSACTION] Erreur dans requete
    Par Tchinkatchuk dans le forum Langage SQL
    Réponses: 7
    Dernier message: 26/05/2005, 17h38
  5. Recuperer les erreurs des requetes sql en asp
    Par emile13 dans le forum ASP
    Réponses: 3
    Dernier message: 01/04/2004, 13h49

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