du compilateur activer l'unicode !!

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
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)
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)
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)")
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