Sqlite pour un gros nul
Sqlite pour un gros nul
Salut tous le monde, voila ca fait longtemp que j'avais pas utiliser PB mais comme j'ais besoin de faire une appli qui utilise une base de données j'ais pensé utilisé sqlite. J'ais donc fouillé le forum et l'aide de pb mais les explications reste trés flou pour moi.
Je cherche juste un tuto claire pour apprendre à gérer une BDD sqlite sous PB.
Dans cette base je dois enregistrer
- du texte contenue dans des StringGadget et un EditorGadget
- le status de plusieur CheckBoxGadget (0=non coché, 1=coché)
Merci d'avance pour toutes vos réponses.
Je cherche juste un tuto claire pour apprendre à gérer une BDD sqlite sous PB.
Dans cette base je dois enregistrer
- du texte contenue dans des StringGadget et un EditorGadget
- le status de plusieur CheckBoxGadget (0=non coché, 1=coché)
Merci d'avance pour toutes vos réponses.
peut etre une reponse ici :
http://baptiste-wicht.developpez.com/tu ... /debutant/
http://baptiste-wicht.developpez.com/tu ... /debutant/
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
SQL est le langage de creation de requetes de base de données
SQLite est un SGBDR (Systeme de Gestion de Bases de Données Relationnelles).
Lien : http://fr.wikipedia.org/wiki/SQL
Lien : http://fr.wikipedia.org/wiki/SQLite
SQLite est un SGBDR (Systeme de Gestion de Bases de Données Relationnelles).
Lien : http://fr.wikipedia.org/wiki/SQL
Lien : http://fr.wikipedia.org/wiki/SQLite
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Nadine boudin, il est en forme aujourd'huifacile !! SQLITE est sans sucre !!

ROOOOOO mais oui mais oui lé vlaiment vilain ce DOBLO
@PROGI
D'accord donc SQLITE est comme on pourrait dire le programme, et SQL est le language pour faire marcher ce programme

Mais SQLITE c'est pas créé par un genie de PB ??? c'est un truc pour tout le monde ???
Ce code te montre comment créer une base de donnée avec une table, y insérer des données, supprimer, modifier et faire quelques requêtes simple.
Je te recommande d'utiliser SQliteManager, ça te permet de travailler sur ta base de donnée en local pour faire tes test avec une interface graphique similaire à phpMyAdmin, tu peux te le procurer gratuitement en téléchargeant Wamp server.
Code : Tout sélectionner
UseSQLiteDatabase()
;création du fichier texte contenant la base de donnée s'il n'existe pas, ex : première utilisation du logiciel
If FileSize("bdd.txt") = -1
If CreateFile(0, "bdd.txt")
CloseFile(0)
EndIf
EndIf
If OpenDatabase(0, "bdd.txt", "", "") ;ouverture de la base de donnée
DatabaseUpdate(0, "CREATE TABLE eleves (id INTEGER PRIMARY KEY, nom TEXT, age INTEGER, sexe TEXT)") ;création de la table eleves avec 4 champs (id, nom, age, sexe) si elle n'existe pas
;Ajout d'informations dans la table eleves (pas besoin de préciser l'id car il est en auto incrémentation
DatabaseUpdate(0, "INSERT INTO eleves (nom, age, sexe) VALUES ('Pierre', '18', 'Homme')")
DatabaseUpdate(0, "INSERT INTO eleves (nom, age, sexe) VALUES ('Paul', '18', 'Homme')")
DatabaseUpdate(0, "INSERT INTO eleves (nom, age, sexe) VALUES ('Marcel', '20', 'Homme')")
;Ajout d'informations avec variables
nom.s = "Julie"
DatabaseUpdate(0, "INSERT INTO eleves (nom, age, sexe) VALUES ('"+nom+"', '19', 'Femme')")
;Voir tout les eleves
DatabaseQuery(0, "SELECT * FROM eleves")
While NextDatabaseRow(0)
Debug GetDatabaseString(0, 0) ;id
Debug GetDatabaseString(0, 1) ;nom
Debug GetDatabaseString(0, 2) ;age
Debug GetDatabaseString(0, 3) ;sexe
Wend
Debug "#################"
;Eleves ayant 18ans
DatabaseQuery(0, "SELECT nom FROM eleves WHERE age='18'")
While NextDatabaseRow(0)
Debug GetDatabaseString(0, 0) ;nom
Wend
Debug "#################"
;Supprimer un enregistrement
DatabaseUpdate(0, "DELETE FROM eleves WHERE nom='Pierre'")
;Modifier un enregistrement, remplace tout les 19ans par des 20ans
DatabaseUpdate(0, "UPDATE eleves SET age='20' WHERE age='19'")
CloseDatabase(0) ;ferme la base de donnée
EndIf
Dernière modification par Atomo le dim. 08/févr./2009 22:39, modifié 1 fois.
Extrait du Pos de Comtois...
http://www.purebasic.fr/french/viewtopic.php?t=8749
Et il y a ce code contient à peu près tout pour démarrer avec Sqlite...
ftp://ftp-developpez.com/purebasic/sour ... livres.zip
Et allez voir dans l'ordre...
A+
http://www.purebasic.fr/french/viewtopic.php?t=8749
Et il y a ce code contient à peu près tout pour démarrer avec Sqlite...
ftp://ftp-developpez.com/purebasic/sour ... livres.zip
Et allez voir dans l'ordre...
A+
SQlite
Pour utiliser des variables tu dois avoir la syntaxes appropriée.
Je met ma requête dans ine variable string
StrgQuery.s
Pour voir L'information sur un Client disons que le Id du client est Mun309
StrgNoClient = Strg309
Lorsque la requête ne nécessite pas beaucoup de texte tu peux entrer la requête directement dans la commande databasequery.
Je met ma requête dans ine variable string
StrgQuery.s
Pour voir L'information sur un Client disons que le Id du client est Mun309
StrgNoClient = Strg309
Code : Tout sélectionner
StrgQuery = "Select Client.Adresse, Client.Nom From Client"
StrgQuery = StrgQuery + " where(((Client.NoClient) ="
StrgQuery = StrgQuery + " '" + StrgNoClient + "'"
databasequery(0,StrgQuery)
Code : Tout sélectionner
Databasequery(0,"Select * from client")
La ligne indiquant StrgNoClient aurait du être
StrgNoClient = "Mun309"Code : Tout sélectionner
Si ca interesse encore quelqu'un, et comme j'en avais besoin, j'ai repris la lib de Peter 'kiffi' Tübben sur purearea et l'ai remis au goût du jour pour Purebasic 4.30
(J'ai essayé de traduire les commentaires qui étaient en Allemand-merci google)
le fichier include [sqlite.pbi] à mettre dans un répertoire include (pas obligatoire bien sur):
(J'ai essayé de traduire les commentaires qui étaient en Allemand-merci google)

le fichier include [sqlite.pbi] à mettre dans un répertoire include (pas obligatoire bien sur):
Code : Tout sélectionner
; http://www.sqlite.org
; http://www.purearea.net/pb/download/userlibs/sqlite3_userlib.zip
; version 1.01 du 27.05.2005 par Peter 'kiffi' Tübben
; maj version 2009 - Flaith
; 23.03.2009 MAJ pour PureBasic 4.30
; 24.03.2009 AJOUT des dernières fonctions manquantes
Structure s_RecordSet
BOF.i
EOF.i
Handle.i
Rows.i
Cols.i
CurrentPos.i
sValue.s
EndStructure
;- Valeurs de retour
#SQLITE3_OK = 0 ; Successful Result
#SQLITE3_ERROR = 1 ; SQL error Or missing database
#SQLITE3_INTERNAL = 2 ; An internal logic error in SQLite
#SQLITE3_PERM = 3 ; Access permission denied
#SQLITE3_ABORT = 4 ; Callback routine requested An abort
#SQLITE3_BUSY = 5 ; The database file is locked
#SQLITE3_LOCKED = 6 ; A table in The database is locked
#SQLITE3_NOMEM = 7 ; A malloc() failed
#SQLITE3_READONLY = 8 ; Attempt To write A readonly database
#SQLITE3_INTERRUPT = 9 ; Operation terminated by SQLite_Interrupt()
#SQLITE3_IOERR = 10 ; Some kind of disk I/O error occurred
#SQLITE3_CORRUPT = 11 ; The database disk image is malformed
#SQLITE3_NOTFOUND = 12 ; (internal Only) table Or record not found
#SQLITE3_FULL = 13 ; Insertion failed because database is full
#SQLITE3_CANTOPEN = 14 ; Unable To open The database file
#SQLITE3_PROTOCOL = 15 ; database lock protocol error
#SQLITE3_EMPTY = 16 ; (internal Only) database table is empty
#SQLITE3_SCHEMA = 17 ; The database schema changed
#SQLITE3_TOOBIG = 18 ; Too much Data For one Row of A table
#SQLITE3_CONSTRAINT = 19 ; abort due To contraint violation
#SQLITE3_MISMATCH = 20 ; Data type mismatch
#SQLITE3_MISUSE = 21 ; Library used incorrectly
#SQLITE3_NOLFS = 22 ; Uses OS features not supported on host
#SQLITE3_AUTH = 23 ; Authorization denied
#SQLITE3_ROW = 100 ; sqlite_step() has another Row ready
#SQLITE3_DONE = 101 ; sqlite_step() has finished executing
;- Drapeaux 'Flags' pour les opérations lors ouverture
; d'un fichier avec sqlite3_open_v2() par exemple
#SQLITE_OPEN_READONLY = $00000001
#SQLITE_OPEN_READWRITE = $00000002
#SQLITE_OPEN_CREATE = $00000004
#SQLITE_OPEN_DELETEONCLOSE = $00000008
#SQLITE_OPEN_EXCLUSIVE = $00000010
#SQLITE_OPEN_MAIN_DB = $00000100
#SQLITE_OPEN_TEMP_DB = $00000200
#SQLITE_OPEN_TRANSIENT_DB = $00000400
#SQLITE_OPEN_MAIN_JOURNAL = $00000800
#SQLITE_OPEN_TEMP_JOURNAL = $00001000
#SQLITE_OPEN_SUBJOURNAL = $00002000
#SQLITE_OPEN_MASTER_JOURNAL = $00004000
#SQLITE_OPEN_NOMUTEX = $00008000
#SQLITE_OPEN_FULLMUTEX = $00010000
;- Declarations
Global LastMessage.s
Global sqlite3_aggregate_context.i
Global sqlite3_aggregate_count.i
Global sqlite3_auto_extension.i
; added 24/03/09 : specific to version 3.6.11
Global sqlite3_backup_finish.i
Global sqlite3_backup_init.i
Global sqlite3_backup_pagecount.i
Global sqlite3_backup_remaining.i
Global sqlite3_backup_step.i
; **************
Global sqlite3_bind_blob.i
Global sqlite3_bind_double.i
Global sqlite3_bind_int.i
Global sqlite3_bind_int64.i
Global sqlite3_bind_null.i
Global sqlite3_bind_parameter_count.i
Global sqlite3_bind_parameter_index.i
Global sqlite3_bind_parameter_name.i
Global sqlite3_bind_text.i
Global sqlite3_bind_text16.i
; added 24/03/09
Global sqlite3_bind_value.i
Global sqlite3_bind_zeroblob.i
Global sqlite3_blob_bytes.i
Global sqlite3_blob_close.i
Global sqlite3_blob_open.i
Global sqlite3_blob_read.i
Global sqlite3_blob_write.i
; **************
Global sqlite3_busy_handler.i
Global sqlite3_busy_timeout.i
Global sqlite3_changes.i
; added 24/03/09
Global sqlite3_clear_bindings.i
; **************
Global sqlite3_close.i
Global sqlite3_collation_needed.i
Global sqlite3_collation_needed16.i
Global sqlite3_column_blob.i
Global sqlite3_column_bytes.i
Global sqlite3_column_bytes16.i
Global sqlite3_column_count.i
; added 24/03/09
Global sqlite3_column_database_name.i
Global sqlite3_column_database_name16.i
; **************
Global sqlite3_column_decltype.i
Global sqlite3_column_decltype16.i
Global sqlite3_column_double.i
Global sqlite3_column_int.i
Global sqlite3_column_int64.i
Global sqlite3_column_name.i
Global sqlite3_column_name16.i
; added 24/03/09
Global sqlite3_column_origin_name.i
Global sqlite3_column_origin_name16.i
Global sqlite3_column_table_name.i
Global sqlite3_column_table_name16.i
; **************
Global sqlite3_column_text.i
Global sqlite3_column_text16.i
Global sqlite3_column_type.i
Global sqlite3_commit_hook.i
Global sqlite3_complete.i
Global sqlite3_complete16.i
; added 24/03/09
Global sqlite3_config.i
Global sqlite3_context_db_handle.i
; **************
Global sqlite3_create_collation.i
Global sqlite3_create_collation16.i
; added 24/03/09
Global sqlite3_create_collation_v2.i
; **************
Global sqlite3_create_function.i
Global sqlite3_create_function16.i
; added 24/03/09
Global sqlite3_create_module.i
Global sqlite3_create_module_v2.i
; **************
Global sqlite3_data_count.i
; added 24/03/09
Global sqlite3_db_config.i
Global sqlite3_db_handle.i
Global sqlite3_db_mutex.i
Global sqlite3_db_status.i
Global sqlite3_declare_vtab.i
Global sqlite3_enable_load_extension.i
Global sqlite3_enable_shared_cache.i
; **************
Global sqlite3_errcode.i
Global sqlite3_errmsg.i
Global sqlite3_errmsg16.i
Global sqlite3_exec.i
; added 24/03/09
Global sqlite3_expired.i
Global sqlite3_extended_errcode.i
Global sqlite3_extended_result_codes.i
Global sqlite3_file_control.i
; **************
Global sqlite3_finalize.i
Global sqlite3_free.i
Global sqlite3_free_table.i
; added 24/03/09
Global sqlite3_get_autocommit.i
; **************
Global sqlite3_get_auxdata.i
Global sqlite3_get_table.i
; added 24/03/09
Global sqlite3_global_recover.i
Global sqlite3_initialize.i
; **************
Global sqlite3_interrupt.i
Global sqlite3_last_insert_rowid.i
Global sqlite3_libversion.i
Global sqlite3_libversion_number.i
; added 24/03/09
Global sqlite3_limit.i
Global sqlite3_load_extension.i
Global sqlite3_malloc.i
Global sqlite3_memory_alarm.i
Global sqlite3_memory_highwater.i
Global sqlite3_memory_used.i
; **************
Global sqlite3_mprintf.i
; added 24/03/09
Global sqlite3_mutex_alloc.i
Global sqlite3_mutex_enter.i
Global sqlite3_mutex_free.i
Global sqlite3_mutex_leave.i
Global sqlite3_mutex_try.i
Global sqlite3_next_stmt.i
; **************
Global sqlite3_open.i
Global sqlite3_open16.i
; added 24/03/09
Global sqlite3_open_v2.i
Global sqlite3_os_end.i
Global sqlite3_os_init.i
Global sqlite3_overload_function.i
; **************
Global sqlite3_prepare.i
Global sqlite3_prepare16.i
; added 24/03/09
Global sqlite3_prepare16_v2.i
Global sqlite3_prepare_v2.i
Global sqlite3_profile.i
; **************
Global sqlite3_progress_handler.i
; added 24/03/09
Global sqlite3_randomness.i
Global sqlite3_realloc.i
Global sqlite3_release_memory.i
; **************
Global sqlite3_reset.i
; added 24/03/09
Global sqlite3_reset_auto_extension.i
; **************
Global sqlite3_result_blob.i
Global sqlite3_result_double.i
Global sqlite3_result_error.i
Global sqlite3_result_error16.i
; added 24/03/09
Global sqlite3_result_error_code.i
Global sqlite3_result_error_nomem.i
Global sqlite3_result_error_toobig.i
; **************
Global sqlite3_result_int.i
Global sqlite3_result_int64.i
Global sqlite3_result_null.i
Global sqlite3_result_text.i
Global sqlite3_result_text16.i
Global sqlite3_result_text16be.i
Global sqlite3_result_text16le.i
Global sqlite3_result_value.i
; added 24/03/09
Global sqlite3_result_zeroblob.i
Global sqlite3_rollback_hook.i
; **************
Global sqlite3_set_authorizer.i
Global sqlite3_set_auxdata.i
; added 24/03/09
Global sqlite3_shutdown.i
Global sqlite3_sleep.i
; **************
Global sqlite3_snprintf.i
; added 24/03/09
Global sqlite3_soft_heap_limit.i
Global sqlite3_sql.i
Global sqlite3_status.i
; **************
Global sqlite3_step.i
; added 24/03/09
Global sqlite3_stmt_status.i
Global sqlite3_table_column_metadata.i
Global sqlite3_test_control.i
Global sqlite3_thread_cleanup.i
Global sqlite3_threadsafe.i
; **************
Global sqlite3_total_changes.i
Global sqlite3_trace.i
; added 24/03/09
Global sqlite3_transfer_bindings.i
Global sqlite3_update_hook.i
; **************
Global sqlite3_user_data.i
Global sqlite3_value_blob.i
Global sqlite3_value_bytes.i
Global sqlite3_value_bytes16.i
Global sqlite3_value_double.i
Global sqlite3_value_int.i
Global sqlite3_value_int64.i
; added 24/03/09
Global sqlite3_value_numeric_type.i
; **************
Global sqlite3_value_text.i
Global sqlite3_value_text16.i
Global sqlite3_value_text16be.i
Global sqlite3_value_text16le.i
Global sqlite3_value_type.i
; added 24/03/09
Global sqlite3_version.i
Global sqlite3_vfs_find.i
Global sqlite3_vfs_register.i
Global sqlite3_vfs_unregister.i
; **************
Global sqlite3_vmprintf.i
; added 24/03/09
Global sqlite3_win32_mbcs_to_utf8.i
; **************
;-Variable globale de la DLL
Global sqlite3DLL
;- procedures
ProcedureDLL.i SQLite3_End()
If sqlite3DLL
CloseLibrary(sqlite3DLL)
EndIf
sqlite3DLL = 0
EndProcedure
ProcedureDLL.i SQLite3_InitLib(sSQLiteDLLPath.s)
; Valeur de retour de la DLL automatisée par #PB_Any
sqlite3DLL = OpenLibrary(#PB_Any, sSQLiteDLLPath)
; Info :
; si Valeur 8 => UTF8
; si valeur 16 => UTF16
If sqlite3DLL
sqlite3_aggregate_context = GetFunction(sqlite3DLL, "sqlite3_aggregate_context")
sqlite3_aggregate_count = GetFunction(sqlite3DLL, "sqlite3_aggregate_count")
sqlite3_auto_extension = GetFunction(sqlite3DLL, "sqlite3_auto_extension")
; ATTENTION : spécifique à la version 3.6.11 (à utiliser avec parcimonie)
; Important: This interface is experimental and is subject to change without notice.
; cf : http://www.sqlite.org/c3ref/backup_finish.html
sqlite3_backup_finish = GetFunction(sqlite3DLL, "sqlite3_backup_finish")
sqlite3_backup_init = GetFunction(sqlite3DLL, "sqlite3_backup_init")
sqlite3_backup_pagecount = GetFunction(sqlite3DLL, "sqlite3_backup_pagecount")
sqlite3_backup_remaining = GetFunction(sqlite3DLL, "sqlite3_backup_remaining")
sqlite3_backup_step = GetFunction(sqlite3DLL, "sqlite3_backup_step")
;********************************************************************************************
sqlite3_bind_blob = GetFunction(sqlite3DLL, "sqlite3_bind_blob")
sqlite3_bind_double = GetFunction(sqlite3DLL, "sqlite3_bind_double")
sqlite3_bind_int = GetFunction(sqlite3DLL, "sqlite3_bind_int")
sqlite3_bind_int64 = GetFunction(sqlite3DLL, "sqlite3_bind_int64")
sqlite3_bind_null = GetFunction(sqlite3DLL, "sqlite3_bind_null")
sqlite3_bind_parameter_count = GetFunction(sqlite3DLL, "sqlite3_bind_parameter_count")
sqlite3_bind_parameter_index = GetFunction(sqlite3DLL, "sqlite3_bind_parameter_index")
sqlite3_bind_parameter_name = GetFunction(sqlite3DLL, "sqlite3_bind_parameter_name")
sqlite3_bind_text = GetFunction(sqlite3DLL, "sqlite3_bind_text")
sqlite3_bind_text16 = GetFunction(sqlite3DLL, "sqlite3_bind_text16")
sqlite3_bind_value = GetFunction(sqlite3DLL, "sqlite3_bind_value")
sqlite3_bind_zeroblob = GetFunction(sqlite3DLL, "sqlite3_bind_zeroblob")
sqlite3_blob_bytes = GetFunction(sqlite3DLL, "sqlite3_blob_bytes")
sqlite3_blob_close = GetFunction(sqlite3DLL, "sqlite3_blob_close")
sqlite3_blob_open = GetFunction(sqlite3DLL, "sqlite3_blob_open")
sqlite3_blob_read = GetFunction(sqlite3DLL, "sqlite3_blob_read")
sqlite3_blob_write = GetFunction(sqlite3DLL, "sqlite3_blob_write")
sqlite3_busy_handler = GetFunction(sqlite3DLL, "sqlite3_busy_handler")
sqlite3_busy_timeout = GetFunction(sqlite3DLL, "sqlite3_busy_timeout")
sqlite3_changes = GetFunction(sqlite3DLL, "sqlite3_changes")
sqlite3_clear_bindings = GetFunction(sqlite3DLL, "sqlite3_clear_bindings")
sqlite3_close = GetFunction(sqlite3DLL, "sqlite3_close")
sqlite3_collation_needed = GetFunction(sqlite3DLL, "sqlite3_collation_needed")
sqlite3_collation_needed16 = GetFunction(sqlite3DLL, "sqlite3_collation_needed16")
sqlite3_column_blob = GetFunction(sqlite3DLL, "sqlite3_column_blob")
sqlite3_column_bytes = GetFunction(sqlite3DLL, "sqlite3_column_bytes")
sqlite3_column_bytes16 = GetFunction(sqlite3DLL, "sqlite3_column_bytes16")
sqlite3_column_count = GetFunction(sqlite3DLL, "sqlite3_column_count")
sqlite3_column_database_name = GetFunction(sqlite3DLL, "sqlite3_column_database_name")
sqlite3_column_database_name16 = GetFunction(sqlite3DLL, "sqlite3_column_database_name16")
sqlite3_column_decltype = GetFunction(sqlite3DLL, "sqlite3_column_decltype")
sqlite3_column_decltype16 = GetFunction(sqlite3DLL, "sqlite3_column_decltype16")
sqlite3_column_double = GetFunction(sqlite3DLL, "sqlite3_column_double")
sqlite3_column_int = GetFunction(sqlite3DLL, "sqlite3_column_int")
sqlite3_column_int64 = GetFunction(sqlite3DLL, "sqlite3_column_int64")
sqlite3_column_name = GetFunction(sqlite3DLL, "sqlite3_column_name")
sqlite3_column_name16 = GetFunction(sqlite3DLL, "sqlite3_column_name16")
sqlite3_column_origin_name = GetFunction(sqlite3DLL, "sqlite3_column_origin_name")
sqlite3_column_origin_name16 = GetFunction(sqlite3DLL, "sqlite3_column_origin_name16")
sqlite3_column_table_name = GetFunction(sqlite3DLL, "sqlite3_column_table_name")
sqlite3_column_table_name16 = GetFunction(sqlite3DLL, "sqlite3_column_table_name16")
sqlite3_column_text = GetFunction(sqlite3DLL, "sqlite3_column_text")
sqlite3_column_text16 = GetFunction(sqlite3DLL, "sqlite3_column_text16")
sqlite3_column_type = GetFunction(sqlite3DLL, "sqlite3_column_type")
sqlite3_commit_hook = GetFunction(sqlite3DLL, "sqlite3_commit_hook")
sqlite3_complete = GetFunction(sqlite3DLL, "sqlite3_complete")
sqlite3_complete16 = GetFunction(sqlite3DLL, "sqlite3_complete16")
sqlite3_config = GetFunction(sqlite3DLL, "sqlite3_config")
sqlite3_context_db_handle = GetFunction(sqlite3DLL, "sqlite3_context_db_handle")
sqlite3_create_collation = GetFunction(sqlite3DLL, "sqlite3_create_collation")
sqlite3_create_collation16 = GetFunction(sqlite3DLL, "sqlite3_create_collation16")
sqlite3_create_collation_v2 = GetFunction(sqlite3DLL, "sqlite3_create_collation_v2")
sqlite3_create_function = GetFunction(sqlite3DLL, "sqlite3_create_function")
sqlite3_create_function16 = GetFunction(sqlite3DLL, "sqlite3_create_function16")
sqlite3_create_module = GetFunction(sqlite3DLL, "sqlite3_create_module")
sqlite3_create_module_v2 = GetFunction(sqlite3DLL, "sqlite3_create_module_v2")
sqlite3_data_count = GetFunction(sqlite3DLL, "sqlite3_data_count")
sqlite3_db_config = GetFunction(sqlite3DLL, "sqlite3_db_config")
sqlite3_db_handle = GetFunction(sqlite3DLL, "sqlite3_db_handle")
sqlite3_db_mutex = GetFunction(sqlite3DLL, "sqlite3_db_mutex")
sqlite3_db_status = GetFunction(sqlite3DLL, "sqlite3_db_status")
sqlite3_declare_vtab = GetFunction(sqlite3DLL, "sqlite3_declare_vtab")
sqlite3_enable_load_extension = GetFunction(sqlite3DLL, "sqlite3_enable_load_extension")
sqlite3_enable_shared_cache = GetFunction(sqlite3DLL, "sqlite3_enable_shared_cache")
sqlite3_errcode = GetFunction(sqlite3DLL, "sqlite3_errcode")
sqlite3_errmsg = GetFunction(sqlite3DLL, "sqlite3_errmsg")
sqlite3_errmsg16 = GetFunction(sqlite3DLL, "sqlite3_errmsg16")
sqlite3_exec = GetFunction(sqlite3DLL, "sqlite3_exec")
sqlite3_expired = GetFunction(sqlite3DLL, "sqlite3_expired")
sqlite3_extended_errcode = GetFunction(sqlite3DLL, "sqlite3_extended_errcode")
sqlite3_extended_result_codes = GetFunction(sqlite3DLL, "sqlite3_extended_result_codes")
sqlite3_file_control = GetFunction(sqlite3DLL, "sqlite3_file_control")
sqlite3_finalize = GetFunction(sqlite3DLL, "sqlite3_finalize")
sqlite3_free = GetFunction(sqlite3DLL, "sqlite3_free")
sqlite3_free_table = GetFunction(sqlite3DLL, "sqlite3_free_table")
sqlite3_get_autocommit = GetFunction(sqlite3DLL, "sqlite3_get_autocommit")
sqlite3_get_auxdata = GetFunction(sqlite3DLL, "sqlite3_get_auxdata")
sqlite3_get_table = GetFunction(sqlite3DLL, "sqlite3_get_table")
sqlite3_global_recover = GetFunction(sqlite3DLL, "sqlite3_global_recover")
sqlite3_initialize = GetFunction(sqlite3DLL, "sqlite3_initialize")
sqlite3_interrupt = GetFunction(sqlite3DLL, "sqlite3_interrupt")
sqlite3_last_insert_rowid = GetFunction(sqlite3DLL, "sqlite3_last_insert_rowid")
sqlite3_libversion = GetFunction(sqlite3DLL, "sqlite3_libversion")
sqlite3_libversion_number = GetFunction(sqlite3DLL, "sqlite3_libversion_number")
sqlite3_limit = GetFunction(sqlite3DLL, "sqlite3_limit")
sqlite3_load_extension = GetFunction(sqlite3DLL, "sqlite3_load_extension")
sqlite3_malloc = GetFunction(sqlite3DLL, "sqlite3_malloc")
sqlite3_memory_alarm = GetFunction(sqlite3DLL, "sqlite3_memory_alarm")
sqlite3_memory_highwater = GetFunction(sqlite3DLL, "sqlite3_memory_highwater")
sqlite3_memory_used = GetFunction(sqlite3DLL, "sqlite3_memory_used")
sqlite3_mprintf = GetFunction(sqlite3DLL, "sqlite3_mprintf")
sqlite3_mutex_alloc = GetFunction(sqlite3DLL, "sqlite3_mutex_alloc")
sqlite3_mutex_enter = GetFunction(sqlite3DLL, "sqlite3_mutex_enter")
sqlite3_mutex_free = GetFunction(sqlite3DLL, "sqlite3_mutex_free")
sqlite3_mutex_leave = GetFunction(sqlite3DLL, "sqlite3_mutex_leave")
sqlite3_mutex_try = GetFunction(sqlite3DLL, "sqlite3_mutex_try")
sqlite3_next_stmt = GetFunction(sqlite3DLL, "sqlite3_next_stmt")
sqlite3_open = GetFunction(sqlite3DLL, "sqlite3_open")
sqlite3_open16 = GetFunction(sqlite3DLL, "sqlite3_open16")
sqlite3_open_v2 = GetFunction(sqlite3DLL, "sqlite3_open_v2")
sqlite3_os_end = GetFunction(sqlite3DLL, "sqlite3_os_end")
sqlite3_os_init = GetFunction(sqlite3DLL, "sqlite3_os_init")
sqlite3_overload_function = GetFunction(sqlite3DLL, "sqlite3_overload_function")
sqlite3_prepare = GetFunction(sqlite3DLL, "sqlite3_prepare")
sqlite3_prepare16 = GetFunction(sqlite3DLL, "sqlite3_prepare16")
sqlite3_prepare16_v2 = GetFunction(sqlite3DLL, "sqlite3_prepare16_v2")
sqlite3_prepare_v2 = GetFunction(sqlite3DLL, "sqlite3_prepare_v2")
sqlite3_profile = GetFunction(sqlite3DLL, "sqlite3_profile")
sqlite3_progress_handler = GetFunction(sqlite3DLL, "sqlite3_progress_handler")
sqlite3_randomness = GetFunction(sqlite3DLL, "sqlite3_randomness")
sqlite3_realloc = GetFunction(sqlite3DLL, "sqlite3_realloc")
sqlite3_release_memory = GetFunction(sqlite3DLL, "sqlite3_release_memory")
sqlite3_reset = GetFunction(sqlite3DLL, "sqlite3_reset")
sqlite3_reset_auto_extension = GetFunction(sqlite3DLL, "sqlite3_reset_auto_extension")
sqlite3_result_blob = GetFunction(sqlite3DLL, "sqlite3_result_blob")
sqlite3_result_double = GetFunction(sqlite3DLL, "sqlite3_result_double")
sqlite3_result_error = GetFunction(sqlite3DLL, "sqlite3_result_error")
sqlite3_result_error16 = GetFunction(sqlite3DLL, "sqlite3_result_error16")
sqlite3_result_error_code = GetFunction(sqlite3DLL, "sqlite3_result_error_code")
sqlite3_result_error_nomem = GetFunction(sqlite3DLL, "sqlite3_result_error_nomem")
sqlite3_result_error_toobig = GetFunction(sqlite3DLL, "sqlite3_result_error_toobig")
sqlite3_result_int = GetFunction(sqlite3DLL, "sqlite3_result_int")
sqlite3_result_int64 = GetFunction(sqlite3DLL, "sqlite3_result_int64")
sqlite3_result_null = GetFunction(sqlite3DLL, "sqlite3_result_null")
sqlite3_result_text = GetFunction(sqlite3DLL, "sqlite3_result_text")
sqlite3_result_text16 = GetFunction(sqlite3DLL, "sqlite3_result_text16")
sqlite3_result_text16be = GetFunction(sqlite3DLL, "sqlite3_result_text16be")
sqlite3_result_text16le = GetFunction(sqlite3DLL, "sqlite3_result_text16le")
sqlite3_result_value = GetFunction(sqlite3DLL, "sqlite3_result_value")
sqlite3_result_zeroblob = GetFunction(sqlite3DLL, "sqlite3_result_zeroblob")
sqlite3_rollback_hook = GetFunction(sqlite3DLL, "sqlite3_rollback_hook")
sqlite3_set_authorizer = GetFunction(sqlite3DLL, "sqlite3_set_authorizer")
sqlite3_set_auxdata = GetFunction(sqlite3DLL, "sqlite3_set_auxdata")
sqlite3_shutdown = GetFunction(sqlite3DLL, "sqlite3_shutdown")
sqlite3_sleep = GetFunction(sqlite3DLL, "sqlite3_sleep")
sqlite3_snprintf = GetFunction(sqlite3DLL, "sqlite3_snprintf")
sqlite3_soft_heap_limit = GetFunction(sqlite3DLL, "sqlite3_soft_heap_limit")
sqlite3_sql = GetFunction(sqlite3DLL, "sqlite3_sql")
sqlite3_status = GetFunction(sqlite3DLL, "sqlite3_status")
sqlite3_step = GetFunction(sqlite3DLL, "sqlite3_step")
sqlite3_stmt_status = GetFunction(sqlite3DLL, "sqlite3_stmt_status")
sqlite3_table_column_metadata = GetFunction(sqlite3DLL, "sqlite3_table_column_metadata")
sqlite3_test_control = GetFunction(sqlite3DLL, "sqlite3_test_control")
sqlite3_thread_cleanup = GetFunction(sqlite3DLL, "sqlite3_thread_cleanup")
sqlite3_threadsafe = GetFunction(sqlite3DLL, "sqlite3_threadsafe")
sqlite3_total_changes = GetFunction(sqlite3DLL, "sqlite3_total_changes")
sqlite3_trace = GetFunction(sqlite3DLL, "sqlite3_trace")
sqlite3_transfer_bindings = GetFunction(sqlite3DLL, "sqlite3_transfer_bindings")
sqlite3_update_hook = GetFunction(sqlite3DLL, "sqlite3_update_hook")
sqlite3_user_data = GetFunction(sqlite3DLL, "sqlite3_user_data")
sqlite3_value_blob = GetFunction(sqlite3DLL, "sqlite3_value_blob")
sqlite3_value_bytes = GetFunction(sqlite3DLL, "sqlite3_value_bytes")
sqlite3_value_bytes16 = GetFunction(sqlite3DLL, "sqlite3_value_bytes16")
sqlite3_value_double = GetFunction(sqlite3DLL, "sqlite3_value_double")
sqlite3_value_int = GetFunction(sqlite3DLL, "sqlite3_value_int")
sqlite3_value_int64 = GetFunction(sqlite3DLL, "sqlite3_value_int64")
sqlite3_value_numeric_type = GetFunction(sqlite3DLL, "sqlite3_value_numeric_type")
sqlite3_value_text = GetFunction(sqlite3DLL, "sqlite3_value_text")
sqlite3_value_text16 = GetFunction(sqlite3DLL, "sqlite3_value_text16")
sqlite3_value_text16be = GetFunction(sqlite3DLL, "sqlite3_value_text16be")
sqlite3_value_text16le = GetFunction(sqlite3DLL, "sqlite3_value_text16le")
sqlite3_value_type = GetFunction(sqlite3DLL, "sqlite3_value_type")
sqlite3_version = GetFunction(sqlite3DLL, "sqlite3_version")
sqlite3_vfs_find = GetFunction(sqlite3DLL, "sqlite3_vfs_find")
sqlite3_vfs_register = GetFunction(sqlite3DLL, "sqlite3_vfs_register")
sqlite3_vfs_unregister = GetFunction(sqlite3DLL, "sqlite3_vfs_unregister")
sqlite3_vmprintf = GetFunction(sqlite3DLL, "sqlite3_vmprintf")
sqlite3_win32_mbcs_to_utf8 = GetFunction(sqlite3DLL, "sqlite3_win32_mbcs_to_utf8")
;********************************************************************************************
If sqlite3_get_table = 0
LastMessage = "Couldn't init 'sqlite3_get_table'"
ProcedureReturn #False
EndIf
If sqlite3_free_table = 0
LastMessage = "Couldn't init 'sqlite3_free_table'"
ProcedureReturn #False
EndIf
If sqlite3_open = 0
LastMessage = "Couldn't init 'sqlite3_open'"
ProcedureReturn #False
EndIf
If sqlite3_open16 = 0
LastMessage = "Couldn't init 'sqlite3_open16'"
ProcedureReturn #False
EndIf
If sqlite3_open_v2 = 0
LastMessage = "Couldn't init 'sqlite3_open_V2'"
ProcedureReturn #False
EndIf
If sqlite3_close = 0
LastMessage = "Couldn't init 'sqlite3_close'"
ProcedureReturn #False
EndIf
If sqlite3_exec = 0
LastMessage = "Couldn't init 'sqlite3_exec'"
ProcedureReturn #False
EndIf
ProcedureReturn #True
Else
LastMessage = "General Error - Couldn't open '"+sSQLiteDLLPath+"'"
ProcedureReturn #False
EndIf
EndProcedure
ProcedureDLL.i SQLite3_CreateDatabase(sDataBase.s, boolOverwrite.i)
If FileSize(sDataBase) = -1 ; DB n'existe pas
; Création
hResult = CallCFunctionFast(sqlite3_open, sDataBase, @sqlite3_dbHandle)
If hResult = #SQLITE3_OK
LastMessage = "OK"
ProcedureReturn sqlite3_dbHandle
EndIf
Else
If boolOverwrite = 1 ; DB existe, on remplace
; Ecriture
DeleteFile(sDataBase)
hResult = CallCFunctionFast(sqlite3_open, sDataBase, @sqlite3_dbHandle)
If hResult = #SQLITE3_OK
LastMessage = "OK"
ProcedureReturn sqlite3_dbHandle
EndIf
EndIf
EndIf
ProcedureReturn 0
EndProcedure
ProcedureDLL.i SQLite3_OpenDatabase(sDataBase.s)
If FileSize(sDataBase) > 0
hResult = CallCFunctionFast(sqlite3_open, sDataBase, @sqlite3_dbHandle)
If hResult = #SQLITE3_OK
ProcedureReturn sqlite3_dbHandle
EndIf
EndIf
ProcedureReturn 0
EndProcedure
ProcedureDLL.i SQLite3_CloseDatabase(lDataBaseHandle.i)
If lDataBaseHandle = 0
LastMessage = "Wrong Database-Handle"
ProcedureReturn
EndIf
hResult = CallCFunctionFast(sqlite3_close, lDataBaseHandle)
If hResult = #SQLITE3_OK
LastMessage = "OK"
ProcedureReturn #True
Else
LastMessage = "Couldn't close Database"
ProcedureReturn #False
EndIf
EndProcedure
ProcedureDLL.i SQLite3_Execute(sSQLQuery.s, lDataBaseHandle.i)
If lDataBaseHandle = 0
LastMessage = "Wrong Database-Handle"
ProcedureReturn
EndIf
hResult = CallCFunctionFast(sqlite3_exec, lDataBaseHandle, sSQLQuery, #Null, #Null, @ReturnValue)
If hResult = #SQLITE3_OK
LastMessage = "OK"
ProcedureReturn #True
Else
CallCFunctionFast(sqlite3_errmsg, @ReturnValue)
LastMessage = PeekS(ReturnValue)
ProcedureReturn #False
EndIf
EndProcedure
; ProcedureDLL.i SQLite3_GetTable(sSQLQuery.s, *Array, *Rows, *Cols, lDataBaseHandle.i)
;
; If lDataBaseHandle = 0
; LastMessage = "Wrong Database-Handle"
; ProcedureReturn
; EndIf
;
; hResult = CallCFunctionFast(sqlite3_get_table, lDataBaseHandle, sSQLQuery, @lResultsPtr, @lRows, @lCols, @ReturnValue)
;
; If hResult = #SQLITE3_OK
;
; ; return number of rows/columns
; PokeL(*Rows, lRows)
; PokeL(*Cols, lCols)
;
; If lRows > -1 And lCols > 0
;
; ; redimension results array (clears data)
; Dim DBData.s(lRows, lCols - 1)
;
; ; copy data into array
; Address.i = lResultsPtr
;
; For Row.i = 0 To lRows
; For Col.i = 0 To lCols - 1
; DBData(Row, Col) = PeekS(PeekL(Address + Col * 4))
; Next
; Address + lCols * 4
; Next
;
; EndIf
;
; ; free table memory
; CallCFunctionFast(sqlite3_free_table, lResultsPtr)
;
; LastMessage = "OK"
; ProcedureReturn #True
;
; Else
;
; CallCFunctionFast(sqlite3_errmsg, @ReturnValue)
; LastMessage = PeekS(ReturnValue)
; ProcedureReturn #False
;
; EndIf
;
; EndProcedure
;
ProcedureDLL.i SQLite3_GetRecordset(sSQLQuery.s, lDataBaseHandle.i, *Recordset.s_RecordSet)
If lDataBaseHandle = 0
LastMessage = "Wrong Database-Handle"
ProcedureReturn
EndIf
*Recordset\Handle = 0
hResult = CallCFunctionFast(sqlite3_get_table, lDataBaseHandle, sSQLQuery, @lResultsPtr, @lRows, @lCols, @ReturnValue)
If hResult = #SQLITE3_OK
*Recordset\Handle = lResultsPtr
*Recordset\Rows = lRows
*Recordset\Cols = lCols
*Recordset\CurrentPos = 1
LastMessage = "OK"
ProcedureReturn @Recordset
Else
CallCFunctionFast(sqlite3_errmsg, @ReturnValue)
LastMessage = PeekS(ReturnValue)
ProcedureReturn #False
EndIf
EndProcedure
ProcedureDLL.i SQLite3_GetFieldIndexByName(sFieldname.s, *Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
If *Recordset\Handle <> 0
Address.i = *Recordset\Handle
; Search named Column
For Col.i = 0 To *Recordset\Cols - 1
If sFieldname = PeekS(PeekL(Address + Col * 4))
LastMessage = "OK"
ProcedureReturn Col
EndIf
Next
EndIf
LastMessage = "No such Columnname: '" + sFieldname + "'"
ProcedureReturn -1
EndProcedure
ProcedureDLL.i SQLite3_GetRecordsetValueByName(sFieldname.s, *Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
myCol = SQLite3_GetFieldIndexByName(sFieldname, *Recordset)
If myCol > -1
LastMessage = "OK"
*Recordset\sValue = PeekS(PeekL(*Recordset\Handle + (myCol * 4) + (*Recordset\CurrentPos * *Recordset\Cols) * 4))
ProcedureReturn #True
Else
LastMessage = "No such Columnname: '" + sFieldname + "'"
*Recordset\sValue = ""
ProcedureReturn #False
EndIf
EndProcedure
ProcedureDLL.i SQLite3_GetRecordsetValueByIndex(lIndex.i, *Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
If lIndex < 0 Or lIndex > *Recordset\Cols
LastMessage = "No such Columnindex: '" + Str(lIndex) + "'"
*Recordset\sValue = ""
ProcedureReturn #False
Else
LastMessage = "OK"
*Recordset\sValue = PeekS(PeekL(*Recordset\Handle + (lIndex * 4) + (*Recordset\CurrentPos * *Recordset\Cols) * 4))
ProcedureReturn #True
EndIf
EndProcedure
ProcedureDLL.i SQLite3_ReleaseRecordset(*Recordset.s_RecordSet)
If *Recordset\Handle <> 0
CallCFunctionFast(sqlite3_free_table, *Recordset\Handle)
*Recordset\Handle =0
EndIf
LastMessage = "OK"
EndProcedure
ProcedureDLL.i SQLite3_RecordsetMoveNext(*Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
*Recordset\BOF = #False
*Recordset\EOF = #False
*Recordset\CurrentPos = *Recordset\CurrentPos + 1
If *Recordset\CurrentPos > *Recordset\Rows
*Recordset\CurrentPos = *Recordset\Rows
*Recordset\EOF = #True
EndIf
If *Recordset\CurrentPos = 1
*Recordset\BOF = #True
EndIf
EndProcedure
ProcedureDLL.i SQLite3_RecordsetMovePrevious(*Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
*Recordset\BOF = #False
*Recordset\EOF = #False
*Recordset\CurrentPos = *Recordset\CurrentPos - 1
If *Recordset\CurrentPos < 1
*Recordset\CurrentPos = 1
*Recordset\BOF = #True
EndIf
If *Recordset\CurrentPos = *Recordset\Rows
*Recordset\EOF = #True
EndIf
EndProcedure
ProcedureDLL.i SQLite3_RecordsetMoveFirst(*Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
*Recordset\BOF = #True
*Recordset\EOF = #False
*Recordset\CurrentPos = 1
If *Recordset\CurrentPos = *Recordset\Rows
*Recordset\EOF = #True
EndIf
EndProcedure
ProcedureDLL.i SQLite3_RecordsetMoveLast(*Recordset.s_RecordSet)
If *Recordset\Handle = 0
LastMessage = "Wrong Recordset-Handle"
ProcedureReturn
EndIf
*Recordset\BOF = #False
*Recordset\EOF = #True
*Recordset\CurrentPos = *Recordset\Rows
If *Recordset\CurrentPos = 1
*Recordset\BOF = #True
EndIf
EndProcedure
ProcedureDLL.s SQLite3_GetLastMessage()
ProcedureReturn LastMessage
EndProcedure
ProcedureDLL.s SQLite3_GetLibVersion()
ProcedureReturn PeekS(CallCFunctionFast(sqlite3_libversion))
EndProcedure
ProcedureDLL.i SQLite3_GetLibVersionNumber()
ProcedureReturn CallCFunctionFast(sqlite3_libversion_number)
EndProcedure
Dernière modification par flaith le mar. 24/mars/2009 18:04, modifié 3 fois.