PureBasic

Forums PureBasic
Nous sommes le Mar 17/Sep/2019 3:36

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 
Auteur Message
 Sujet du message: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 1:10 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
Il n'y que les idiots qui ne change pas d'avis :roll:. Donc je continue malgré tout mon RAD purebasic.

En voici une première partie pour la gestion d'une base de données.

Note: il s'agit d'une DLL et c'est full object (je ne tiens pas à lancer la polémique)

Téléchargement de la dll et du code exemple ICI

Contenu du zip:
  • README
  • x86
    • main.pb (fichier de test à lancer en mode x64)
    • DB.pbi
    • DB.dll
  • x64
    • main.pb (fichier de test à lancer en mode x86)
    • DB.pbi
    • DB.dll

Manuel (en cours d'écriture)

Et voici un petit code exemple avec juste deux fichiers, pays et localités

Code:
XIncludeFile "DB.pbi"

; Création de la base de données
Global myDb.DB::Db=DB::NewDb("maBase.db")
Global.DB::Table tbPays=DB::NewTable("pays","id")
Global.DB::Table      tbLocalites=DB::NewTable("localites","id")
Global.DB::Column paysNom=DB::NewTextColumn("nom","nom",DB::#COLUMN_IS_UNIQUE|DB::#COLUMN_IS_NOT_NULL),
      locNom=DB::NewTextColumn("nom","nom",DB::#COLUMN_IS_NOT_NULL),
      locCode=DB::NewTextColumn("code","code postal",DB::#COLUMN_IS_NOT_NULL),
      locPays=DB::NewLinkedColumn("id_pays","pays",tbPays,paysNom,DB::#COLUMN_IS_NOT_NULL)
tbPays\addColumn(paysNom)
tbLocalites\addColumn(locNom)
tbLocalites\addColumn(locCode)
tbLocalites\addColumn(locPays)
myDb\addTable(tbPays)
myDb\addTable(tbLocalites)
;génération de la base de données
myDb\build()
;Ajout de quelques enregistrement
;--> Des pays
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbPays) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(paysNom,"Belgique")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbPays) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(paysNom,"France")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbPays) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(paysNom,"Espagne")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbPays) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(paysNom,"Italie")
ins\execute()
;--> Des localités
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbLocalites) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(locNom,"Liège")
ins\setValue(locCode,"4000")
ins\setValue(locPays,"1")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbLocalites) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(locNom,"Waremme")
ins\setValue(locCode,"4300")
ins\setValue(locPays,"1")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbLocalites) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(locNom,"Trooz")
ins\setValue(locCode,"4870")
ins\setValue(locPays,"1")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbLocalites) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(locNom,"Paris")
ins\setValue(locCode,"75000")
ins\setValue(locPays,"2")
ins\execute()
Define ins.DB::TableInsertion=DB::NewTableInsertion(myDb,tbLocalites) ;en mode autofree pas besoin de libèré l'objet
ins\setValue(locNom,"Reims")
ins\setValue(locCode,"69000")
ins\setValue(locPays,"2")
ins\execute()

;Affichage
;--> On défini un ordre de tri
Define ord.DB::OrderClause=DB::NewOrderClause()
ord\addColumn(tbPays,paysNom)
ord\addColumn(tbLocalites,locNom)
;--> On défini une sélection
Define sel.DB::TableSelection=DB::NewTableSelection(myDb,tbLocalites,locNom)
sel\addColumn(tbLocalites,locCode)
sel\addColumn(tbPays,paysNom,tbLocalites,locPays)
sel\setOrderClause(ord)
sel\execute()
While sel\nextRow()
  Debug PeekS(sel\getColumnValue(0))
  Debug PeekS(sel\getColumnValue(1))
  Debug PeekS(sel\getColumnValue(2))
Wend
sel\free()
ord\free()
; Teste d'une modification
Define myWhere.DB::WhereClause=DB::NewWhereClause(tbLocalites)
myWhere\setClauseOfId("=",1)
Define myMod.DB::TableUpdate=DB::NewTableUpdate(myDb,tbLocalites,myWhere,#False)
myMod\addColumn(locNom,"Teste modif")
myMod\execute()
; Affichage de cette dernière
Define mySel.DB::TableSelection=DB::NewTableSelection(myDb,tbLocalites,locNom)
mySel\setWhereClause(myWhere)
mySel\execute()
If mySel\firstRow()
  Debug "Enregistrement modifié"
  Debug PeekS(mySel\getColumnValue(0))
EndIf
myMod\free()
myWhere\free()
mySel\free()


_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Dernière édition par microdevweb le Mar 17/Oct/2017 11:23, édité 3 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 9:02 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 02/Oct/2011 16:17
Messages: 2172
Localisation: 50200 Coutances
NOT FOUND

_________________
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce GT 640 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.62, 5.70 LTS
Un homme doit être poli, mais il doit aussi être libre !


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 9:04 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 17/Déc/2007 12:44
Messages: 1628
Bonjour,

Juste une lettre en trop a la fin donc le lien est "https://github.com/microdevweb/DB/archive/master.zip".

GallyHC

_________________
Image

Image

Image Official site of PureBasic
Image Official site of SpiderBasic

Configuration : Tower: Windows 7 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.62 (x86 et x64)


Dernière édition par GallyHC le Lun 16/Oct/2017 10:27, édité 1 fois.

Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 10:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
Merci GallyHC,

Le lien est modifié et testé, j'ai également apporté quelque modif, entre autre on peut placer la dll dans un autre répertoire et choisir le chemin relatif en modifient exemple Global path.s="LIB\" dans le fichier DB.pbi

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 11:27 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
microdevweb a écrit:
Il n'y que les idiots qui ne change pas d'avis . Donc je continue malgré tout mon RAD purebasic.
je navais aucun doute je savais que tu allais revenir.
bonjour chez les ch'ti. a écrit:
Dans le nord tu pleures deux fois : la première en arrivant, et la deuxième parce que tu ne veux plus repartir.
C'est un peu pareil avec PureBasic.
microdevweb a écrit:
il s'agit d'une DLL et c'est full object (je ne tiens pas à lancer la polémique)
Pas de polémique effectivement car tout a déja été dit.

Par contre tu dis que tu as testé ? Quand je lance main.db j'ai le message "cannot open LIB\DB.dll" ce qui explique d'ailleurs pourquoi je ne peux pas lister les fonctionnalités de ta DLL.

Et puisque je parle fonctionnalités, je trouve que tu aurais pu faire une présentation de ta DLL
- Liste des fonctionnalités, paramétres, Aide.
- Liste des constantes et significations.

Ta fonction NewInsert() pourquoi l'appeler comme ça ? Une insertion c'est forcément un nouveau membre de la table en question. Je pense par contre que DN::TableInsert() était plus parlant.

Ton code n'étant pas fonctionnel je ne peux pas en dire plus. Quoi que ...
Code:
Define myWhere.DB::WhereClause=DB::NewWhereClause(tbLocalites)
:mrgreen: héhé::no-comment::pas de polémique.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 13:21 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6650
Localisation: Isere
Et ben moi j'suis drôlement content que tu soit pas idiot :mrgreen:
Un membre de la famille qui part, c'est toujours triste.....surtout quant on l’apprécie 8) et même quand c'est un que j'aime pas, c'est pour dire. :lol:

Comme le dit FALSAM, c'est pas si facile de partir de PB
Y'eeeeeeeen a plein qu'ont éééééééssayééééé...et y zon u des proooobleeeemes :mrgreen:

Image

Et puis moi, ça m'intéresse drôlement comment on peut faire de la POO avec PB, même si perso, je ne pense pas faire des applis assez grosses pour que je l'utilise un jour 8)
Cette valse de pointeurs c'est du grand art, et puis tu as raison de ne pas te laisser influencer, regarde FRED combien de personnes ont essayé de le décourager, l'influencer, etc...avec PB et surtout avec SB...il reste solide comme un roc, il croit en ce qu'il fait....et il le prouve.
Parce que quoi que l'on fasse dans la vie, tu trouveras toujours un abruti comme moi pour t'empêcher de tourner en rond :D

Toi tu sais de quoi tu parles, alors que pas mal des détracteurs à la POO ne la connaisse pas.
Donc, continue si tu le veux bien, à nous montrer ce qu'est ce genre de prog.
Et apres tout c'est pas la fin du monde si au milieu d'un de nos codes, il faille taper un CreateObject, NewCakeChose, ou autre, du moment que derrière ça fait du bon job :wink:

Je viens de tester et ça me dit que la DLL est pas faite pour windows, je suis sous W7 X86 v5.61 8O

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Lun 16/Oct/2017 22:40 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
@Kwai chang caine, heu oui la dll est compilée en 64, je ferais un version 32. Concernant le choix de la POO,je vais essayé de faire court

Un j'ai prévu également de faire ce rad pour java. (pas tout de suite évidement)

Deux imaginons la construction d'une maison avec un seul ouvrier, ben il sera vite dépassé le pauvre.
Maintenant si ou délègue le travail à plusieurs ouvriers qualifié pour chaque tache se sera surement plus efficace. Bon ça on sait déjà le faire avec les modules et en procédural, mais si par contre je veux plusieurs ouvriers avec les même qualifications se sera plus difficile (pas impossible bien sur), par contre en POO cela est assez facile il suffis d'instancier un nouvel objet.

Bon maintenant restons les pieds sur terre et la je donne raison à falsam, Purebasic n'est pas idéal pour le développement en POO, cela demande quelques bricolages et on peu oublier certains principe tel que le polymorphisme. Donc ce n'est qu'un simulacre de Poo.

@falsam, tu à raison pour la doc que je compte la faire sur le wiki de github et merci pour tes conseilles sur le nom de certaines méthodes.

Ce qui est prévu pour l'avenir de ce RAD.

Db est le cœur du système

Dans un avenir proche

un module DIALOG, pour créer des fenêtres avec des layouts et possibilité de lier les champs de la base de donnée.

un module tbs, j'ai déjà réalisé ce module mais il va être refait pour affiché les données sous forme de tableau.

Dans avenir nettement plus éloigné:

Un soft pour créer la Db (via la dll) qui fonctionnera par copier coller, pour créer des requêtes de sélection, insertion etc...

La j’hésite encore, soit des modules pour créer les fenêtres fiches et tables (qui utiliserais dialog) ou un soft qui par copier coller générerais le code nécessaire.

Pour résumé: cela fait pas mal de temps que teste et essaye de faire ce fameux Rad. J'en fais un premier fonctionnel que j'ai utilisé pour un soft client (suivant +- le même principe mais nettement moins orienté objet) et cela ma permis de gérer tout les fichiers annexes en moins d'une heure.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 8:49 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6650
Localisation: Isere
Je me doutais un peu pour la dll :wink:

En fin de compte, la poo étant arrivé après le procédural, of course puisque elle est faite avec, et bien on en a fait une question de goût, de mode, d'époque.
Mais maintenant qu'on parle de plus en plus des deux styles de prog, qu'on les compare, je me rend compte qu'on compare un cheval de course et de labour

Bien sûr on peut courir avec un cheval de trait, et labourrer avec "ideal du gazon", mais là aussi y'en a qui vont avoir des problèmes...

Ce sont en fin de compte deux choses incomparable directement, alors on peut le faire comme on le ferait entre java et pb, vb et pb, etc..
Mais pour ce qui est du c++, soit il est nécessaire de programmer poo, plusieurs equipes, gros projet, soit c'est de l'ordre de la preference ou du j'suis "in"et j'me la pète

Au final, ça rejoint la même philosophie du vrai programmeur, imposant que l'on ne choisis pas un langage pour coder ses applications, c'est l'application qui le choisi pour vous.
Si on travaille sur un tableur, avec des options graphiques, on a beau détester excel, mais le vba est une bonne option, ou d'autres logiciels de ce style.
Le faire en pb, c'est possible, mais long et jamais aussi complet.

Comme quoi, je me suis réconcilié avec la poo, maintenant que je lui ai trouvé sa place.
Ce qui est le plus triste, c'est que peu de personnes ont été foutues de m'expliquer ça, même les pro poo.. :|

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 10:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
Nouvelle version:

Pas de gros changement, certaine méthodes on été renommée et il y a 2 version x64 et x86

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 10:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6650
Localisation: Isere
Marche nickel cette fois, merci 8)

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 11:46 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
microdevweb a écrit:
Dans un avenir proche
un module DIALOG, pour créer des fenêtres avec des layouts et possibilité de lier les champs de la base de donnée.
microdevweb a écrit:
Dans avenir nettement plus éloigné:
Un soft pour créer la Db (via la dll) qui fonctionnera par copier coller, pour créer des requêtes de sélection, insertion etc...
Aie !!! Peut être que tu pourrais te contenter de la création de la base de données ?

Il y a déja eu SpeedDev et RAD purebasic (speedev), deux projets abandonnés. Quel nom pour le suivant ? :wink:

Concentre toi sur la base de données.

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 13:28 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 23/Sep/2006 18:32
Messages: 6650
Localisation: Isere
On a tous ce défaut...la "frivolité" :oops:
Comme on peut presque tout faire avec PB, dans presque tous les sujets...et ben on a envie de tout bouffer...et on a qu'un estomac..

Les journées ne faisant que 24h, et comme il faut faire des trucs inutiles, comme travailler, dormir, manger, boire, évacuer, honorer son épousailles (pas en même temps hein !!! :? enfin faut voir :lol: ), promener le chien, les gosses et aussi bobonne...
Bref ça fait pleins d'heures en moins pour l'accomplissement de nos nouvelles envies....
Du coups, des centaines de cadavres le bide ouvert ou fini à X pour cent :|
Toujours ce satané proverbe des cordonniers les moins bien chaussés...ce qui y connaissent fifre..y vont sur telecharger.com et utilisent les freewares qu'on leur proposent et sont pas emmerdés :mrgreen:

_________________
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 14:05 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 29/Juin/2011 14:11
Messages: 1655
Localisation: Belgique
@falsam,

je ferais en fonction de mes disponibilités, actuellement j' ai mis en route le soft pour la base de donnée. Ce sera un outils simple sans fioriture.

_________________
Windows 10 64 bits PB: 5.70 ; 5.71 beta 2


Haut
 Profil  
Répondre en citant le message  
 Sujet du message: Re: Db gestion de base de données
MessagePosté: Mar 17/Oct/2017 14:06 
Hors ligne
Avatar de l’utilisateur

Inscription: Dim 22/Aoû/2010 15:24
Messages: 6849
Localisation: IDF (Yvelines)
microdevweb a écrit:
Ce sera un outils simple sans fioriture.
Voila une bonne nouvelle :wink:

_________________

➽ Config PureBasic : i3, RAM 4Go, NVidia (1024 Mo), Windows 10 - PB 5.70 LTS
➽ Je papote aussi sur http://purebasic.chat

➽ Sites personnels http://falsam.com & EasySprite.js

➽ Je ne réponds pas aux MP techniques


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 14 messages ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  
cron

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye