[SOCPB 2006] Projet # 1 : Rendre facile la gestion de MySQL

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

[SOCPB 2006] Projet # 1 : Rendre facile la gestion de MySQL

Message par Progi1984 »

Projet #1

Leader : Flype

Membres :

Bon Code

Note :
Le Leader a pour but :
+ d'orienter le développement du projet
+ de regrouper les codes recus
+ de formater le code final (lisibilité, commentaire)
Donc ses paroles sont lettres d'évangiles


Liens :

Payants :
-Access : http://office.microsoft.com/access/ (Version d'essai)
-Oracle : http://www.oracle.com/technology/softwa ... index.html
-Interbase : http://www.borland.com/fr/products/interbase/index.html (essai)
-Sybase : http://www.sybase.fr/products/informationmanagement/#ds
-DB2 : http://www-306.ibm.com/software/data/db2/windows/
-4D : http://www.4d.fr/documentation/4DDoc67/ODC/ODCMDUS.HTM
-HyperFile : http://www.pcsoft.fr/accueilpub/hyper-file.htm (démo)
-Adabas : http://www1.softwareag.com/Corporate/pr ... efault.asp
-InterSystem : http://www.intersystems.fr/france/cache ... ageID=1721 (mais téléchargeable gratuitement et illimité)
-FileMaker : http://www.filemaker.fr/ (version d'évaluation)
-SQL Server : http://www.microsoft.com/france/sql/sql ... fault.mspx (version d'évaluation)
-Progress : http://www.progress.com/products/deploy ... /index.ssp
-OpenBase : http://store.openbase.com/index.html

Gratuits :
-Firebird2: http://www.firebird-fr.eu.org/
-PostgreSQL8: http://www.postgresqlfr.org/
-SQLite: http://www.sqlite.org/
-MySQL5: http://www-fr.mysql.com/
-EyeDB : http://www.eyedb.org/
-Ingres : http://opensource.ingres.com/projects/ingres/
-Kexi : http://www.kexi-project.org/
-MyLittleBase : http://www.framasoft.net/article1519.html
-MaxDB : http://www.framasoft.net/article1591.html

Je ne sais pas ?
-Informix : http://www-5.ibm.com/fr/software/data/i ... ormix.html
-Paradox : http://en.wikipedia.org/wiki/Paradox_(database)
-Dbase : http://www.dbase.com/
Dernière modification par Progi1984 le jeu. 29/juin/2006 15:17, modifié 6 fois.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Bien, on va pouvoir commencer.

Etant au travail, on verra ce soir pour le regroupement des idées.
En attendant, l'heure du cahier des charges à commencé, donc n'hésitez pas à proposer vos idées içi.

Ceux qui ont décider de travailler sur ce sujet merci de le faire savoir içi, histoire de mieux connaitrel'équipe.

Bonne chance à tous les projets. :)
Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Ok, moi je vais participer mais attendez un peut car je suis en exam :wink:
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

pas de soucis, de toutes facons le probleme de temps est quelque chose qu'il va falloir gérer parceque tout le monde est dans le meme cas.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Bon, j'ai un peu réfléchit à la question.
j'ai besoin de connaitre votre avis sur plusieurs choses.

1/
Etes-vous réellement utilisateur (via purebasic ou non) de base de données (mysql, sqlite, access, oracle, ...) ?

et quelles sont justement les BDD que vous aimeriez voir supportées dans purebasic.

On parlait de MySQL, mais après tout j'aimerais 'penser' dès le départ à un système qui permettrait de supporter autant de BDD différentes qu'on veut.

J'ai actuellement en ma possession les includes/api pour
MySQL5: http://www-fr.mysql.com/
PostgreSQL8: http://www.postgresqlfr.org/
Firebird2: http://www.firebird-fr.eu.org/
SQLite: http://www.sqlite.org/
( une autres BDD ? faites des propositions... )

2/
Vous me dites ce que vous en pensez mais j'ai l'intention d'utiliser, pour notre projet, la particularité des 'SubSystem' de Purebasic 4.0 pour intégrer toutes ces BDD. J'ai étudié la question et c'est ce qui semble le plus raisonnable/adapté.

Ainsi, un programmeur Purebasic désireux de se connecter à une base de données via ODBC n'a rien de plus à faire que d'utiliser les commandes 'database' de purebasic. Bref, comme d'habitude.

Par contre, le programmeur désireux de se connecter à un serveur MySQL sans passer par ODBC, précisera au compilateur le sous-système 'MySQL' ou 'PostgreSQL', etc... (voir la page de configuration du compilateur) tout en utilisant les commandes 'databases' classiques.

3/
Grâce à ce support, on pourra aussi penser dans un second temps à créér des outils de gestions/reporting de bases de données intégrés à l'IDE PureBasic. ( à la phpmyadmin comme on l'a déjà évoqué ).

4/
Créer un sous-système pour PureBasic 4.0, comment faire ?

En fait c'est pas dur,
çà se construit exactement comme une userlibrary classique, donc soit en ASM, soit en C, soit plus probablement (sauf difficulté incontournable) via Tailbite. SAUF que les noms des fonctions doivent respecter les noms des fonctions natives de purebasic. Ce n'est techniquement pas obligatoire de respecter à l'identique le nom des fonctions natives, mais çà permet et c'est le but, de rendre l'utilisation transparente pour le programmeur final.

Le but sera donc de subsituer le fichier :

\PureBasic\PureLibraries\Database

Par ceux-ci :

\PureBasic\SubSystems\MySQL\PureLibraries\Database
\PureBasic\SubSystems\PostgreSQL\PureLibraries\Database
\PureBasic\SubSystems\Firebird\PureLibraries\Database
\PureBasic\SubSystems\SQLite\PureLibraries\Database

Donc autant de library 'database' que de sous-système.

Toutefois, étant donné les nombreuses fonctions supplémentaires qu'apportent les API pour MySQL et les autres, on rajoutera peut-être des fonctions spécifiques à chaque base de données. Ce n'est pas le plus urgent, à mon avis çà, çà viendra au moment où on développera les outils tierces.
Dernière modification par Flype le mar. 20/juin/2006 14:10, modifié 1 fois.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Voici ma trame de départ pour programmer les sous-systèmes :

Cette trame reprends les fonctions 'database' de purebasic.

à nous de reprogrammer chaque fonction.

Code : Tout sélectionner

;- Trame de sous-système de bases de données pour Purebasic 4.0

XIncludeFile "libmysql5.pb"

Procedure.l CloseDatabase(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumnName(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumnType(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseColumns(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.s DatabaseDriverDescription()
  ProcedureReturn #Null$
EndProcedure
Procedure.s DatabaseDriverName()
  ProcedureReturn #Null$
EndProcedure
Procedure.s DatabaseError()
  ProcedureReturn #Null$
EndProcedure
Procedure.l DatabaseQuery(database.l, query.s)
  ProcedureReturn #Null
EndProcedure
Procedure.l DatabaseUpdate(database.l, query.s)
  ProcedureReturn #Null
EndProcedure
Procedure.l ExamineDatabaseDrivers()
  ProcedureReturn #Null
EndProcedure
Procedure.l FirstDatabaseRow(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseDouble(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseFloat(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseLong(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l GetDatabaseQuad(database.l, column.l)
  ProcedureReturn #Null
EndProcedure
Procedure.s GetDatabaseString(database.l, column.l)
  ProcedureReturn #Null$
EndProcedure
Procedure.l InitDatabase()
  ProcedureReturn #Null
EndProcedure
Procedure.l IsDatabase(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l NextDatabaseDriver()
  ProcedureReturn #Null
EndProcedure
Procedure.l NextDatabaseRow(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l OpenDatabase(database.l, host.s, user.s, passwd.s)
  ProcedureReturn #Null
EndProcedure
Procedure.l OpenDatabaseRequester(database.l)
  ProcedureReturn #Null
EndProcedure
Procedure.l PreviousDatabaseRow(database.l)
  ProcedureReturn #Null
EndProcedure
C'est pas trop dur mais attention tout de même.
Par example comment 'émuler' les #PB_Any ?
Dr Dri vient justement de balancer un code intéressant à ce sujet.
Il faudrait l'étudier de plus près.

Certaines fonctions comme DatabaseDriverDescription()
n'ont de sens que sous ODBC, on lui fera donc retourner une chaine de caractères vide par ex, ou alors on renvoie la version du serveur MySQL. Bref, il y a moyen de s'amuser...

Allez stop, j'attends vos réactions maintenant.
:D
Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Sa me semble être de bonne idée et je suis sur la même longueur d'onde que toi.

Celle que tu a cité sont les principal utilisé a l'heure actuel je pense.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Je le dis dès maintenant,

Il faudra un membre de l'équipe pour réaliser la documentation.
Ce ne sera pas une mince affaire mais ce sera un rôle clef.
Car il n'y a pas de projet comme celui-ci sans véritable support derrière. Sinon çà sert à rien car si on est 3 couillons à utiliser notre travail sous prétexte qu'il n'y a pas de documentations, on aura l'air malin.

Un volontaire ?
Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

:? C'est bizarre il y a eu plein de vote pour le projet 1 et là si je comprend bien on est que deux a participer 8O

Je ne suis pas volontaire, mon français est pitoyable :lol:
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

wolfjeremy a écrit :Sa me semble être de bonne idée et je suis sur la même longueur d'onde que toi.

Celle que tu a cité sont les principal utilisé a l'heure actuel je pense.
Cool, çà fait plaisir :P
Utilises-tu toi-même des BDD, si oui laquelle/lesquelles ?

Perso, ma propre expérience (c'est pas phénoménal) :
. PostgreSQL ( il y a longtemps, mais je m'y remets )
. MySQL ( depuis 3 ans )
. SQLite ( j'ai survolé il y a qq temps )
. Firebird ( j'ai découvert récemment, je viens de m'en installée une à la maison pour faire des tests, çà m'a l'air pas mal )
. Access ( un peu en cours, mais aucune idée de l'interface avec purebasic )
Image
wolfjeremy
Messages : 1202
Inscription : sam. 31/déc./2005 23:52

Message par wolfjeremy »

Développement sous mysql pour le web, dans mes programmes je l’ai utilisé une seule fois, mais sources perdue pendant un formatage donc projet annuler.

Pas d’autres expériences malheureusement.
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

En ce qui concerne mon code, il a l'air compliqué comme ca (79 lignes je crois ?) mais en fait il ne fait que donner un accès à quelques fonctions
Object_GetOrAllocate(*Object, Object.l)
Object_GetObject(*Object, Object.l)
Object_IsObject(*Object, Object.l)
Object_EnumerateAll(*Object, Callback, *VoidData)
Object_EnumerateStart(*Object)
Object_EnumerateNext(*Object, *ID.Long)
Object_EnumerateAbort(*Object)
Object_Free(*Object, Object.l)
Object_Init(StructureSize.l, IncrementStep.l, FreeObject)
Object_GetThreadMemory(MemoryID.l)
Object_InitThreadMemory(Size.l, InitFunction, EndFunction)
Si tu utilises ces fonctions, tu ne vas pas émuler le #PB_Any mais bel et bien utiliser le système qu'utilisent les libs natives pour créer des objets (statiques ou dynamiques)

Sinon je pense que le mieux serait de réaliser entièrement le subsystem MySQL qui servira de squelette aux autres bases de données. Aussi l'idéal serait de se borner à recoder toutes les fonctions natives et rien de plus de manière à assurer une compatibilité totale entre les subsystems.

Dri
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Bon j'ai pas encore attaqué les bases de données mais je pense que sa se révelera comme un point très positif de le mettre en sous-système et de gérer plusieurs moteur de base de données.

Pour le moment je comprend les bases de SQL (les tables, ...) ce qui m'a permi de mettre -666 post à un pote dans son profil et moi 1millions sur son portail PwsPHP.

C'est en attendant de trouver un projet à réaliser :( . (enfin hormis le PBSOC qui est un méga projet pour moi :lol: :lol: )

Peut-être moins utilisée ici, sa pourrait être simpa de penser à l'intégration des commandes pour Microsoft SQL Server enfin si sa une utilité et que c'est réalisable :D
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Un projet qui a l'air bien lancé... :)
bernard13
Messages : 1221
Inscription : mer. 05/janv./2005 21:30

Message par bernard13 »

j'aimerai bien vous aider mais les base de données ce que rien du tout

mais serais bien qu'on puisse lire des fichiers access via PB
Répondre