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

Sujets variés concernant le développement en PureBasic
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

Dans ce cas il faudrait demander à Fred d'ajouter des types de données mais de mémoire une date n'est qu'un long (timestamp) sauf pour mysql qui traite les dates comme du texte il me semble.

Sinon pour garantir une compatibilité, c'est surtout sur les fonctions qu'il faut garder le shéma de PB.

Dri
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

en fait de mémoire, pour les dates, c'est une limitation de ODBC...
mais faudrait demander confirmation à Fred.
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

alpha de chez alpha hein mais çà marche.

http://www.penguinbyte.com/apps/pbwebst ... mysql5.zip
Image
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

J'ai regardé rapidement, j'ai pas testé... Mais bon j'ai vu plusieurs choses qu'on pourrait corriger.

Sinon tu n'as pas utilisé le gestionnaire d'objets, à cause des problèmes rencontrés avec jaPBe je suppose.

Dri
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

ouchla oui, t'inquiètes pas, il y a effectivement encore beaucoup à faire.
c'est un premier jet, juste pour voir si çà fonctionne aussi chez vous.
mais çà sera bcp plus propre après.

je n'ai pas encore inclus les objets pour #PB_Any & co
car j'ai quelques difficultés avec tailbite parfois, alors j'ai voulu réduire la trame au strict minimum pour l'instant. parceque mon tableau que j'utilise pour les ID me plait pas du tout, c'est juste en attendant d'implémenter ton truc. pour jaPBe tant pis, j'aime bien l'IDE purebasic aussi, pas de souci ;-)

ma prochaine étape c'est le OpenDatabaseRequester() qui ressemble dors et déjà à çà :
Image
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Flype a écrit :je n'ai pas encore inclus les objets pour #PB_Any & co [...]
et puis aussi et surtout pour 'libérer' les objets database automatiquement c'est génial.


sinon, mes premières expériences concernant le développement des subsystems c'est un peu galère en fait.
déjà on peut pas tester avec F5/F6 puisque le nom des fonctions que je redéveloppent existent déjà donc le compilateur s'arrête. normal mais bon...
en fait je bosse avec deux éditeurs en meme temps.

le 1er, pour développer la lib main dans la main avec tailbite
le 2ème pour tester en redémarrant le compilateur à chaque fois

la question d'un outil de dev de subsystem se pose vraiment, histoire de rendre çà plus ergonomique :roll:
Image
Dr. Dri
Messages : 2527
Inscription : ven. 23/janv./2004 18:10

Message par Dr. Dri »

sinon tu commences par développer en mettant un prefixe à tes fonctions.

_OpenDatabase()

[edit]
peut etre que ce code va t'inspirer ^^

Code : Tout sélectionner

Macro OpenDatabase(Database_, Name_, User_, Password_)
  _OpenDatabase(Database_, Name_, User_, Password_)
EndMacro

;fin des macros

Procedure.l _OpenDatabase(Database.l, Name.s, User.s, Password.s)
  ProcedureReturn #Null
EndProcedure

;fin des fonctions

Debug OpenDatabase(0, "", "", "")

;fin des tests
Dri
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Merci Dri, c'est vrai que c pratique ton truc (les macros).
Image
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

état d'avancement du projet #1 :

MySQL Database.lib :

Code : Tout sélectionner

ExamineDatabaseDrivers()    ; non implémenté
NextDatabaseDriver()        ; non implémenté
DatabaseDriverName()        ; non implémenté
DatabaseDriverDescription() ; non implémenté
InitDatabase()              ; implémenté
DatabaseError()             ; implémenté
IsDatabase(a)               ; implémenté
CloseDatabase(a)            ; implémenté
OpenDatabaseRequester(a)    ; à finir
OpenDatabase(a, b, c, d, e) ; implémenté - nouvel argument
DatabaseRows(a)             ; implémenté - nouveauté
DatabaseColumns(a)          ; implémenté
DatabaseColumnName(a, b)    ; implémenté
DatabaseColumnType(a, b)    ; implémenté
DatabaseQuery(a, b)         ; implémenté
DatabaseUpdate(a, b)        ; à finir
PreviousDatabaseRow(a)      ; à finir
FirstDatabaseRow(a)         ; à finir
NextDatabaseRow(a)          ; implémenté
GetDatabaseLong(a, b)       ; implémenté
GetDatabaseQuad(a, b)       ; implémenté
GetDatabaseFloat(a, b)      ; implémenté
GetDatabaseDouble(a, b)     ; implémenté
GetDatabaseString(a, b)     ; implémenté
GetDatabaseDate(a, b)       ; implémenté - nouveauté
GetDatabaseBinary(a, b)     ; implémenté - nouveauté
Dernière modification par Flype le sam. 24/juin/2006 2:55, modifié 1 fois.
Image
Avatar de l’utilisateur
Droopy
Messages : 1151
Inscription : lun. 19/juil./2004 22:31

Message par Droopy »

Je suis ce topic avec attention.
Bon courage
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

tu vas pas etre décu ;-)
en tt cas moi je suis content du résultat.
Image
Dorian
Messages : 489
Inscription : mar. 15/mars/2005 15:33

Message par Dorian »

Flype a écrit :alpha de chez alpha hein mais çà marche.

http://www.penguinbyte.com/apps/pbwebst ... mysql5.zip
J'arrive pas à le faire tourner :cry: , il me dit source de données et pilotes introuvable
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Droopy a écrit :Je suis ce topic avec attention.
Bon courage
+1
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Alors résultat du week end ?
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

euh ma foi avec le boulot, la famille, la coupe du monde ( pour d'autres c'est le bac :D ) et bien çà avance pas mal.
en fait, j'ai presque fini et du coup ce soir je publie le source du subsystem MySQL, en l'état, donc (quasi) fini.

toutes les fonctions purebasic sont implémentées (sauf les xxxDrivers )
ainsi que tout un jeu de fonctions supplémentaires...

voici mon état d'avancement :

Code : Tout sélectionner

;- 
;- Database.lib - Minimal Set
;- 

DeclareDLL.l _ExamineDatabaseDrivers()    ; non implémenté
DeclareDLL.l _NextDatabaseDriver()        ; non implémenté
DeclareDLL.s _DatabaseDriverName()        ; non implémenté
DeclareDLL.s _DatabaseDriverDescription() ; non implémenté

DeclareDLL.l _InitDatabase()
DeclareDLL.s _DatabaseError() ; à finir
DeclareDLL.l _IsDatabase(database.l)
DeclareDLL.l _OpenDatabase(database.l, host.s, user.s, passwd.s, db.s = "") 
DeclareDLL.l _OpenDatabaseRequester(database.l)
DeclareDLL.l _CloseDatabase(database.l)

DeclareDLL.l _DatabaseColumns(database.l)
DeclareDLL.s _DatabaseColumnName(database.l, column.l)
DeclareDLL.l _DatabaseColumnType(database.l, column.l)

DeclareDLL.l _DatabaseQuery(database.l, query.s)
DeclareDLL.l _DatabaseUpdate(database.l, query.s)

DeclareDLL.l _PreviousDatabaseRow(database.l) ; à finir
DeclareDLL.l _FirstDatabaseRow(database.l)
DeclareDLL.l _NextDatabaseRow(database.l)

DeclareDLL.l _GetDatabaseLong(database.l, column.l)
DeclareDLL.q _GetDatabaseQuad(database.l, column.l)
DeclareDLL.f _GetDatabaseFloat(database.l, column.l)
DeclareDLL.d _GetDatabaseDouble(database.l, column.l)
DeclareDLL.s _GetDatabaseString(database.l, column.l)

;- 
;- Database.lib - Extended Set
;- 

DeclareDLL.s _DatabaseQueryString(database.l, query.s)
DeclareDLL.l _DatabaseQueryLong(database.l, query.s)
DeclareDLL.q _DatabaseQueryQuad(database.l, query.s)
DeclareDLL.f _DatabaseQueryFloat(database.l, query.s)
DeclareDLL.d _DatabaseQueryDouble(database.l, query.s)
DeclareDLL.l _DatabaseQueryDate(database.l, query.s)
DeclareDLL.s _DatabaseQueryFormatDate(database.l, query.s, mask.s)

DeclareDLL.l _DatabasePing(database.l)
DeclareDLL.l _DatabaseRows(database.l)
DeclareDLL.l _DatabaseOptions(key.l, *value) 
DeclareDLL.s _DatabaseEscString(database.l, string.s)
DeclareDLL.s _DatabaseHexString(string.s)

DeclareDLL.l _GetDatabaseDate(database.l, column.l)
DeclareDLL.s _GetDatabaseFormatDate(database.l, column.l, mask.s)
DeclareDLL.l _GetDatabaseBinary(database.l, column.l, bAllocateMemory.l = #False)
DeclareDLL.l _GetDatabaseLength(database.l, column.l)

DeclareDLL.l _ExamineDatabaseDbs(database.l, wild.s = "")
DeclareDLL.l _NextDatabaseDb(database.l)
DeclareDLL.s _DatabaseDb(database.l)

DeclareDLL.l _ExamineDatabaseTables(database.l, wild.s = "")
DeclareDLL.l _NextDatabaseTable(database.l)
DeclareDLL.s _DatabaseTable(database.l)

DeclareDLL.l _ExamineDatabaseFields(database.l, table.s, wild.s = "")
DeclareDLL.l _NextDatabaseField(database.l)
DeclareDLL.s _DatabaseField(database.l)

DeclareDLL.l _ExamineDatabaseProcesses(database.l)
DeclareDLL.l _NextDatabaseProcess(database.l)
DeclareDLL.s _DatabaseProcess(database.l, field.l)

DeclareDLL.l _DatabaseDbList(database.l, userList.s(), wild.s = "")
DeclareDLL.l _DatabaseTableList(database.l, userList.s(), wild.s = "")
DeclareDLL.l _DatabaseProcessList(database.l, userList.DATABASE_PROCESS())
en gros il me reste à mieux gérer les erreurs,
donc en gros à tester, tester, tester... avec vous... :wink:

et puis aussi, il faut rendre le source compilable avec TailBite parce que pour le moment c'est plusieurs fichiers .pbi ( en tout il y a ~11000 lignes déjà ).

[EDIT]
oups pardon, je voulais dire 1200 lignes - c'est déjà assez comme çà.
Image
Répondre