Accueil > > > COUCHE D'ABSTRACTION SGBD AVEC RÉSULTATS ORIENTÉ OBJET
COUCHE D'ABSTRACTION SGBD AVEC RÉSULTATS ORIENTÉ OBJET
Information sur la source
Description
Bonjour à tous Une nouvelle mise à jour de la couche d'abstration à une DB. Je vous indiquerai les modifications plus bas :) Dans l'idée, il y a deux classes, celle de base, DB (abstract), et DBResults. Quand vous faites un query (query, unbufferedQuery, multipleQuery, arrayQuery, objectQuery), le résultat de la requete est placé dans une nouvelle instance de la classe DBResults, qui est retourné. Du coup, vous pouvez traiter le résultat indépendament de la classe, ce qui fait que vous pouvez faire différent query. La méthode singleQuery, quant à elle, execute une requete uniquement de type 'action' (voir la methode isAnAction dans la classe DB) (cad autre que SHOW, EXPLAIN, DESCRIBE, SELECT).
Source
- <?php
- // On inclut les différents fichiers :
- require_once ('genericException/genericException.class.php'); // Gestion des exceptions
- require_once ('factory/factory.class.php'); // Factory (utilisée par dbConnector, donc nécéssaire !)
- require_once ('db/dbConnector.class.php'); // Le connector (on peux aussi juste utiliser la factory)
-
-
- $sCon = array ("mysql://root:passwd@127.0.0.1/dbName",
- "pgsql://root:passwd@127.0.0.1/dbName",
- "mssql://root:passwd@127.0.0.1/dbName");
- // Différentes possibilités
-
- // On crée l'instance de la base de donnée :
- try {
- $oDb = dbconnector::connect ($sCon, 'db', false, dbConnector::LOAD_BALANCING); // Load balancing ?
- // On peux aussi utiliser dbConnector::FAIL_OVER (par défaut !)
- }
- catch (dbConnectorException $e) {
- echo "Oups ! :)";
- }
- catch (factoryException $e) {
- echo "Oups ! I did it again .... ?";
- }
- catch (... etc) {
-
- }
-
- // Maintenant on peux faire beaucoup de choses avec
- // Comme faire mumuse en objet :
- echo $oDb->query('requete')->fetchObject->NomColonne;
-
- // Maintenant, il est aussi possible de faire
- $QueryObject = $oDb->query('requete');
- print_r ($QueryObject->fetchAll ()); // pour tout avoir
- $QueryObject->rewind ();
- $QueryObject->next ();
- while ($QueryObject->valid ()) {
- echo $QueryObject->column ('NOM ou INDEX de la colonne en cours');
- // ou
- $var = $QueryObject->current ();
- echo $var['NOM ou INDEX de la colonne en cours'];
- }
- #
- // la fonction prepare permet de préparer et parser une requete afin qu'elle soit prete a etre executée, exemple :
- $sQuery = $oDb->prepare ('SELECT nom, prenom, login, passwd FROM §1user WHERE login=§2 AND passwd=§3', $TablePrefix, $LoginUser, $PasswdUser);
- $QueryObject = $oDb->query ($sQuery);
- #
- #
- // Bien sur, les méthodes de bases existes aussi, tel que (dans la classe DB):
- /*
- lastInsertRowid
- lastInsertId
- changes (= affected_rows)
- query
- singleQuery
- unbufferedQuery
- multipleQuery
- arrayQuery
- objectQuery
- */
-
- // Et voici les méthodes de la classe DBResults:
- /*
- fetch
- fetchObject
- fetchSingle
- fetchAll
- freeResult
- column
- numFields
- numRows
- * Ainsi que les éléments implémentés de la classe Iterator, Seekable et countable
- */
- ?>
<?php
// On inclut les différents fichiers :
require_once ('genericException/genericException.class.php'); // Gestion des exceptions
require_once ('factory/factory.class.php'); // Factory (utilisée par dbConnector, donc nécéssaire !)
require_once ('db/dbConnector.class.php'); // Le connector (on peux aussi juste utiliser la factory)
$sCon = array ("mysql://root:passwd@127.0.0.1/dbName",
"pgsql://root:passwd@127.0.0.1/dbName",
"mssql://root:passwd@127.0.0.1/dbName");
// Différentes possibilités
// On crée l'instance de la base de donnée :
try {
$oDb = dbconnector::connect ($sCon, 'db', false, dbConnector::LOAD_BALANCING); // Load balancing ?
// On peux aussi utiliser dbConnector::FAIL_OVER (par défaut !)
}
catch (dbConnectorException $e) {
echo "Oups ! :)";
}
catch (factoryException $e) {
echo "Oups ! I did it again .... ?";
}
catch (... etc) {
}
// Maintenant on peux faire beaucoup de choses avec
// Comme faire mumuse en objet :
echo $oDb->query('requete')->fetchObject->NomColonne;
// Maintenant, il est aussi possible de faire
$QueryObject = $oDb->query('requete');
print_r ($QueryObject->fetchAll ()); // pour tout avoir
$QueryObject->rewind ();
$QueryObject->next ();
while ($QueryObject->valid ()) {
echo $QueryObject->column ('NOM ou INDEX de la colonne en cours');
// ou
$var = $QueryObject->current ();
echo $var['NOM ou INDEX de la colonne en cours'];
}
#
// la fonction prepare permet de préparer et parser une requete afin qu'elle soit prete a etre executée, exemple :
$sQuery = $oDb->prepare ('SELECT nom, prenom, login, passwd FROM §1user WHERE login=§2 AND passwd=§3', $TablePrefix, $LoginUser, $PasswdUser);
$QueryObject = $oDb->query ($sQuery);
#
#
// Bien sur, les méthodes de bases existes aussi, tel que (dans la classe DB):
/*
lastInsertRowid
lastInsertId
changes (= affected_rows)
query
singleQuery
unbufferedQuery
multipleQuery
arrayQuery
objectQuery
*/
// Et voici les méthodes de la classe DBResults:
/*
fetch
fetchObject
fetchSingle
fetchAll
freeResult
column
numFields
numRows
* Ainsi que les éléments implémentés de la classe Iterator, Seekable et countable
*/
?>
Conclusion
De grosses mises à jours ont été faites.
Le groupement de classes supporte maintenant la connection sur des serveurs dispatchés, en LOAD BALANCING ou FAIL OVER. Elle supporte MySQL, PostGreSQL, MsSQL et d'autres bientots ;)
Et comme toujours : Correction de bugs, amélioration du code, optimisation, danse avec le ptit chat, etc :)
Fichier Zip
Historique
- 10 septembre 2007 22:42:00 :
- Modification de l'exemple
- 25 novembre 2007 21:34:33 :
- Grosse mise à jour, modification du code, nouvelle gestion des exceptions, correction de bugs, utilisation de l'usinage, et possibilité de se connecter à plusieurs base de données grace au mécanisme de connexion corrigé :)
- 06 décembre 2007 03:33:04 :
- Ajout de Nouveauté : Support du Load Balancing, du Fail Over.
Correction de Bug.
Optimisation du Code.
Support de Mysql, Pgsql, Mssql.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
LA taille d'une base de donnée sql [ par FleX ]
ba en fait je suis sur Free et j'ai une base de donnée que je manipule en php.J'aimerai savoir comment c'est ty qu'on peut bien faire pour obtenir la
Fichiers dans une base de donnée [ par Clem ]
Comment uploader un fichier dans une base de données, et le downloader ?
image aleatoire ... sans base de donnée [ par sana72 ]
Bonjour,voile, je dois recharger des images tous les x tempsmes images sont stocké dans un repertoire qui porte le nom du thême et dans ce repertoire,
PHP / ODBC (base access) : Pb de date ! [ par Alextasis ]
AlexVoilà j'ai un ptit problème et ce serait cool si qq un pouvait me renseigner !voilà j'ai une base de donnée ACCESS tout ce qu'il y a de plus simpl
Float ??? [ par Mamienova ]
Je voudrais intégrer dans ma base de donnée un nombre décimal. Le seul petit probléme et que je souhaiterai qu'il n'y ait qu'un seul chiffre apres la
serveur Apache et Base de donnée [ par coolboy78 ]
Bonjour a tous, je dois installé un serveur Apache et crée un base de donné MySQL sous linux ( mais si vous savez le faire sous windows sa peux ken me
sauvegardé tous els fichiers en envoyant tous les fichiers compréssé en 1 seul, sauvegarder la base de donnée [ par pcpourtous ]
Voila, j'aimerais en un clique pouvoir sauvegarder ma base de donnée, j'ai deja trouver quelque chose la dessus et ça à l'air de marcher, j'aimerais a
base de donnée [ par pablor44 ]
slt,voilà j'ai un problème, j'ai créer un sité d'échange de divx. Tous mes divx y sont enregistrés dans une base de donnée mysql et mon problème c'est
php et base de donnée sql.... HELP ;-) [ par zarzar ]
je souhaite adapter en ligne (en php) un programme que j'ai créé sous excel et qui effectue des calculs de moyennes (avec des coeff, des matières), je
Insérer du code php dans une base de donnée mysql [ par Sipadan ]
Bonjour,Voici mon probleme:Dans un champ d'une base de donnée j'insére du code php du type de: <? include("monfichier.php")?>. Sur ma page en .p
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|