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
Et voici un petit code exemple avec juste deux fichiers, pays et localités
Code : Tout sélectionner
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()