du compilateur activer l'unicode !!
Utilisation de la lib interne pour les base de donnée
Oh d'accord
Bon bah j'ai trouvé en fait j'avais pas sélectionner dans options
du compilateur activer l'unicode !!

du compilateur activer l'unicode !!
-
wolfjeremy
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
A oui mais il y une fonction SQLite pour créer une BDD:
Code : Tout sélectionner
;- Constantes
; ----------
#ODBC_ADD_DSN = 1 ; Ajoute une source de donnée
#ODBC_CONFIG_DSN = 2 ; Configure la source de donnée
#ODBC_REMOVE_DSN = 3 ; Supprime la source
#DataBase = 1
#DSN = "PureBasic_DSN" ;nom de votre base
#Driver = "Microsoft Access Driver (*.mdb)" ;driver utilisé
;- Variables
; ---------
File.s = "C:\Documents and Settings\Hugo\Bureau\mabase.mdb" ;emplacement de la bdd
;- Procedures
; ----------
;** On ouvre la connection
; ----------------------
Procedure Makeconnection(Driver.s,Attributes.s)
result = OpenLibrary(1,"ODBCCP32.DLL")
If result <>; 0 ;si il y a un ; enlevez le !
result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,Driver.s,@Attributes)
NewResult = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_ADD_DSN,Driver.s,@Attributes)
CloseLibrary(1)
EndIf
ProcedureReturn result
EndProcedure ; fin de MakeConnection
;===============================================================================
;** On ferme la connection
; ----------------------
Procedure DeleteConnection(Driver.s,DSN.s)
result=OpenLibrary(1,"ODBCCP32.DLL")
If result
strAttributes.s = "DSN="+DSN
result = CallFunction(1, "SQLConfigDataSource", 0,#ODBC_REMOVE_DSN,Driver,strAttributes )
CloseLibrary(1)
If result
ProcedureReturn 1
EndIf
EndIf
EndProcedure ; fin de DeleteConnection
;*******************************************************************************
;Ensuite vous vous connectez comme ca:
;- Programme
; ---------
InitDatabase() ;ou UseODBCDatabase() pour les dernières versions
Makeconnection(#Driver, "DSN="+#DSN+";Description=Access File;DBQ="+File+";") ;ajoute la connexion
OpenDatabase(#DataBase, #DSN, "", "") ;ouvre la base de donnée
DeleteConnection(#Driver, #DSN ) ; ferme la connexion
Dernière modification par Kayne le mar. 10/juin/2008 16:18, modifié 2 fois.
__________________________________________
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
Débutant les tutoriels de mon site sont la pour vous n'hésitez pas à aller les voir: http://tripamort.free.fr/
__________________________________________
Kayne - Webmaster de http://tripamort.free.fr/
-
wolfjeremy
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Bonjour,
Merci
Jean-Marie
Savez-vous si cela fonctionne aussi sous Linux ?wolfjeremy a écrit :CreateFile(0, "DataBase.db")
CloseFile(0)
UseSQLiteDatabase()
OpenDatabase(0, "DataBase.db", "", "")
DatabaseQuery(0, "CREATE DATABASE DataBase") ;Création de la base de donnée dans le fichier DataBase.db
;On créé une table MaTable, on y met les champs Champ1 en varchar (taille spécifié dans la parenthèse) et le champ de de type int.
DatabaseUpdate(0, "CREATE TABLE MaTable (Champ1 varchar(255), Champ2 int(5))")
;Maintenant on insère une entrée dans cette base de donnée, dans la table MaTable
DatabaseUpdate(0, "INSERT INTO MaTable (Champ1, Champ2) VALUES ('Texte dans le champ 1', 12345)")
;Puis on peut lire ce qui a dans la base de donnée
DatabaseQuery(0, "SELECT * FROM MaTable") ;Le * signifie que l'on prend toutes les entrée de la table, ici il y en a qu'une
NextDatabaseRow(0)
;Un petit debug pour te montré ce qu'il y a dans la table
Debug GetDatabaseString(0, 0)
Debug GetDatabaseLong(0, 1)
Merci
Jean-Marie
Bonjour,
wolfjeremy à écrit, il y a un temps....
Un exemple de création d'une base de donnée :
ET greffer sur la séquence ci dessus :
Comme vous le voyez, je ne suis pas spécialement SQlite... Et jusque là préférais traiter mes fichiers seul... Mais bon, faut suivre...
J'ai jeté un oeil sur la doc... Mais pas vraiment envie de m'y coller si la réponse que je pose est négative... Merci aux expert !
Voilà, voilà...
wolfjeremy à écrit, il y a un temps....
Un exemple de création d'une base de donnée :
Ma question : Est-ce que avec Sqlite, pour la même base de donnée "DataBase.db" je peux traiter plusieurs fichiers dans le même fichier "DataBase.db" ... d???CreateFile(0, "DataBase.db")
CloseFile(0)
UseSQLiteDatabase()
OpenDatabase(0, "DataBase.db", "", "")
DatabaseQuery(0, "CREATE DATABASE DataBase") ;Création de la base de donnée dans le fichier DataBase.db
;On créé une table MaTable, on y met les champs Champ1 en varchar (taille spécifié dans la parenthèse) et le champ de de type int.
DatabaseUpdate(0, "CREATE TABLE MaTable (Champ1 varchar(255), Champ2 int(5))")
;Maintenant on insère une entrée dans cette base de donnée, dans la table MaTable
DatabaseUpdate(0, "INSERT INTO MaTable (Champ1, Champ2) VALUES ('Texte dans le champ 1', 12345)")
;Puis on peut lire ce qui a dans la base de donnée
DatabaseQuery(0, "SELECT * FROM MaTable") ;Le * signifie que l'on prend toutes les entrée de la table, ici il y en a qu'une
NextDatabaseRow(0)
;Un petit debug pour te montré ce qu'il y a dans la table
Debug GetDatabaseString(0, 0)
Debug GetDatabaseLong(0, 1)
ET greffer sur la séquence ci dessus :
En supposant évidement que j'ai aussi créer : DatabaseUpdate(0, "CREATE TABLE MonAutreTABLE (ChampAutre1 varchar(255), ChampAutre2 int(5))")DatabaseUpdate(0, "INSERT INTO MonAutreTABLE (ChampAutre1, ChampAutre2) VALUES ('Un autre Texte dans le ChampAutre1', 56789)")
Comme vous le voyez, je ne suis pas spécialement SQlite... Et jusque là préférais traiter mes fichiers seul... Mais bon, faut suivre...
J'ai jeté un oeil sur la doc... Mais pas vraiment envie de m'y coller si la réponse que je pose est négative... Merci aux expert !
Voilà, voilà...
voilà une procedure que j'utilise dans une de mes applications pour initialisé le fichier de la base de donnée
les requêtes Sql BEGIN et COMMIT sont là pour accelerer les requêtes, mais là ça ne sert pas a grand chose !
Code : Tout sélectionner
Procedure NewKeyDb(Name.s)
Protected Sql.s
If CreateFile(#Db, Name.s)
CloseFile(#Db)
If IsDatabase(#Db)<>0 : CloseDatabase(#Db) : EndIf ;Si on a une base de donnée ouverte on la ferme
If OpenDatabase(#Db, Name.s, "", "", #PB_Database_SQLite) = 0
MessageRequester("Error", "Impossible d'ouvir la base de donnée")
ProcedureReturn #False
EndIf
If DatabaseUpdate(#Db, "BEGIN TRANSACTION");
Sql.s = "Grrrrrr";
If DatabaseUpdate(#Db, "CREATE TABLE [InfoData] ([Name] VARCHAR(80) NULL,[Value] VARCHAR(80) NULL);") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "INSERT INTO [InfoData] ('Name','Value') VALUES ('Version','" + Prefs\Version + "')") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "INSERT INTO [InfoData] ('Name','Value') VALUES ('PluginSignature','B64&RC4')") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "INSERT INTO [InfoData] ('Name','Value') VALUES ('Password','" + MD5StringFingerprint(Prefs\Cle) + "')") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "CREATE TABLE [Group] ([Id] INTEGER Not NULL PRIMARY KEY AUTOINCREMENT,[Id_Source] INTEGER NULL,[Icon] VARCHAR(20) NULL,[Title] VARCHAR(80) NULL,[Notes] TEXT NULL);") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "CREATE TABLE [Entry] ([Id] INTEGER Not NULL PRIMARY KEY AUTOINCREMENT,[Icon] VARCHAR(20) NULL,[Id_Group] INTEGER NULL,[Title] VARCHAR(80) NULL,[Notes] TEXT NULL);") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "CREATE TABLE [Field] ([Id] INTEGER Not NULL PRIMARY KEY AUTOINCREMENT,[Icon] VARCHAR(20) NULL,[Id_Entry] INTEGER NULL,[FieldName] VARCHAR(80) NULL,[FieldType] INTEGER NULL,[FieldValue] VARCHAR(255) NULL);") = 0 : DbError(Sql.s) : EndIf
If DatabaseUpdate(#Db, "CREATE TABLE [File] ([Id] INTEGER Not NULL PRIMARY KEY AUTOINCREMENT,[Icon] VARCHAR(20) NULL,[Id_Entry] INTEGER,[FileName] VARCHAR(40),[Pack] BOOLEAN,[Crypt] BOOLEAN,[FileSize] INTEGER, [FileData] VARCHAR);") = 0 : DbError(Sql.s) : EndIf
DatabaseUpdate(#Db, "COMMIT");
EndIf
;MessageRequester("Times", "Temps d'éxécution total : " + Str(ElapsedMilliseconds()-time) + " ms ", #PB_MessageRequester_Ok);
EndIf
ProcedureReturn #True
EndProcedure