Bonjour Thot,
Moi qui suis en ce moment dans les bases de données avec Purebasic et vu le nombre de lignes : 10000 tout de même, c'est clair qu'il faut une base de données.
Je ne connais pas SQLite, mais par contre je connais bien MySQL et ca marche fantastiquement bien avec Purebasic et pourtant avec Purebasic je suis le roi des débutant.
Si tu veux faire un essai sans te prendre la tête :
1. Récupère sur Internet EasyPHP ou mieux XAMP
2. En 30 secondes c'est installé
3. Copie la librairie libmysql.dll qui se trouve dans le répertoire d'installation de Xampp, d'EasyPHP ou de la distrib que tu as choisi vers le répertoire ..\Purebasic\Compilers
4. Fait un essai de connexion avec ton navigateur sur le serveur MySQL avec l'appli PhpmyAdmin, généralement l'adresse est :
http://127.0.0.1/phpmyadmin
5. Toujours dans PhpMyAdmin, crée une table bidon dans la base test pour faire tes tests justement.
6. Utilise ce code que j'ai pompé sur le forum :
Code : Tout sélectionner
#libmysql = 1
host.s = "127.0.0.1"
user.s = "root"
passwd.s = ""
db.s = "test"
port.l = 3306
dbHnd.l
SQL.s
row.s
i.l
j.l
affRows.l
fieldNum.l
rowsNum.l
Procedure.s GetError(db_ID,requester)
Protected Errormsg.s, i.l, Error.l
If CallFunction(#libmysql,"mysql_errno",db_ID) > 0
*Error =CallFunction(#libmysql,"mysql_error",db_ID)
i=-1
Repeat
i=i+1
Errormsg=Errormsg+PeekS(*Error+i,1)
Until PeekB(*Error+i)=0
If requester
Result= MessageRequester("MySQL error",Errormsg,#PB_MessageRequester_Ok)
EndIf
EndIf
ProcedureReturn Errormsg
EndProcedure
If OpenLibrary(#libmysql,"libmysql.dll")
Result=CallFunction(#libmysql,"mysql_init",dbHnd)
If Result
dbHnd = Result
If CallFunction(#libmysql,"mysql_real_connect",dbHnd, host, user, passwd, db, port, "", 0) = 0
GetError(dbHnd,1)
Else
CallDebugger
SQL = "SELECT * FROM bidon"
If CallFunction(#libmysql,"mysql_real_query", dbHnd, SQL, Len(SQL))
GetError(dbHnd,1)
Else
*mysqlResult=CallFunction(#libmysql,"mysql_store_result",dbHnd)
;no result returned
If *mysqlResult=0
;no fields returned means error
If CallFunction(#libmysql,"mysql_field_count",dbHnd)
GetError(dbHnd,1)
;fields are returned, so no error but query didn't return data
Else
EndIf
;results are returned
Else
affRows = CallFunction(#libmysql,"mysql_affected_rows",dbHnd)
fieldNum = CallFunction(#libmysql,"mysql_num_fields",*mysqlResult)
rowsNum = CallFunction(#libmysql,"mysql_num_rows",*mysqlResult)
Debug affRows
Debug fieldNum
Debug rowsNum
For i=1 To rowsNum
*mysqlRow=CallFunction(#libmysql,"mysql_fetch_row",*mysqlResult)
*mysqlLen=CallFunction(#libmysql,"mysql_fetch_lengths",*mysqlResult)
row = ""
;length of given field
For j=1 To fieldNum
length=PeekL(*mysqlLen+4*(j-1))
fieldptr=PeekL(*mysqlRow+4*(j-1))
If fieldptr>0
content.s=PeekS(fieldptr,length)
Else
;zero pointer returend means empty field
content="NULL"
EndIf
row = row + content + ";"
Next j
Debug row
Next i
Result.l=CallFunction(#libmysql,"mysql_free_result",*mysqlResult)
EndIf
EndIf
EndIf
EndIf
Else
MessageRequester("Error!", "Couldn't open the libmysql.dll!")
EndIf
Le plus important c'est cette ligne : SQL = "SELECT * FROM bidon" c'est la que tu mets toutes les commandes que tu veux faire sur tes données.
Cerise sur le gateau, ta base est simultanément accessible depuis ton appli Purebasic et sur Internet avec le navigateur
Voila, si pour une fois je peux aider quelqu'un sur ce forum...
Laurent