Page 1 sur 1

[Résolu] Comment créer une base de données SQLite

Publié : dim. 14/févr./2016 14:15
par Micoute
Bonjour à tous,

J'essaye de faire une base de données avec les régions françaises et leurs départements et capitales, ça fonctionne très bien avec JSON, mais pas avec SQLite et je ne comprends pas pourquoi.

Si quelqu'un de bonne volonté pouvait m'éclairer pour me montre mon erreur, je l'en remercierais beaucoup, pourtant ce n'est pas ma première base de données.

En attendant, merci à tous.

Code : Tout sélectionner

;Ligne 1 : Numéro, Département, Préfecture
;Ligne 2 : Nombre de sous-Préfectures
;Ligne 3 : Sous_Préfectures
;Ligne 4 : Région
Enumeration Fichier
  #FichierJson
  #FichierSqlite
EndEnumeration

Structure Departmnt
  Numero.s
  Departement.s
  Prefecture.s
  SousPrefecture.s[6]
  Region.s
EndStructure

Global Dim Etat.Departmnt(100), Dim NbreSP.i(100), NewList MaRequete.Departmnt(), Table.s = "Departement", i, j
Global.s NomFichier = "Regions et departements francais", ReqSql.s

;Lecture des données
Procedure Initialiser()
  For i = 0 To 100
    AddElement(MaRequete())
    Read.s Etat(i)\Numero
    Read.s Etat(i)\Departement
    Read.s Etat(i)\Prefecture
    Read.i NbreSP(i)
    If NbreSP(i) <> 0
      For j = 0 To  NbreSP(i)-1
        Read.s Etat(i)\SousPrefecture[j]
        ;MaRequete()\SousPrefecture[j] = Etat(i)\SousPrefecture[j]
      Next j
    EndIf
    Read.s Etat(i)\Region
    
    With MaRequete()
      \Numero = Etat(i)\Numero
      \Departement = Etat(i)\Departement
      \Prefecture = Etat(i)\Prefecture
      \Region = Etat(i)\Region
    EndWith
  Next i
EndProcedure

;Sauvegarde des données
Procedure Sauvegarder_JSON()
  ;Création d'un nouveau fichier Json vide
  CreateJSON(#FichierJson)
  
  ;Insérer le tableau Etat() dans la valeur donnée Json
  InsertJSONArray(JSONValue(#FichierJson), Etat())
  
  ;Sauvegarder les données Json dans une chaîne
  SaveJSON(#FichierJson, NomFichier + ".Json")
  
  ;Composer les données Json dans une chaîne
  ;Debug ComposeJSON(#FichierJson, #PB_JSON_PrettyPrint)
EndProcedure

Procedure LireFichier_JSON()
  ;Lire un fichier JSON (Analyser les données JSON à partir d'un fichier)
  LoadJSON(#FichierJson, NomFichier + ".Json")
  
  ;Extraire les éléments dans la liste spécifiée
  ExtractJSONList(JSONValue(#FichierJson), MaRequete())
  
  ForEach MaRequete()
    With MaRequete()
      Debug \Departement + " Préfecture: " + \Prefecture + " (" + Str(Val(\Numero)) + ")"
      For i = 0 To 5
        If \SousPrefecture[i] <> ""
          Debug "Sous-préfecture " + Str(i+1) + ": " + \SousPrefecture[i]
        Else
          Debug "pas de sous-préfecture dans le " + \Numero
          Break
        EndIf
      Next i
      Debug "Région: " + \Region
    EndWith
    Debug ""
  Next
EndProcedure

Procedure lireValeurDonnee(Valeur.s)
  ;Lire un fichier JSON (Analyser les données JSON à partir d'un fichier)
  LoadJSON(#FichierJson, NomFichier + ".Json")
  
  ;Extraire les éléments dans la liste spécifiée
  ExtractJSONList(JSONValue(#FichierJson), MaRequete())
  
  ForEach MaRequete()
    With MaRequete()
      If Left(\Prefecture,5) = Valeur
        MessageRequester("INFO", "Département: " + \Departement + #CRLF$ +
                                 "Préfecture: " + \Prefecture + #CRLF$ +
                                 "Sous-préfecture 1: " + \SousPrefecture[0] + #CRLF$ +
                                 "Sous-préfecture 2: " + \SousPrefecture[1] + #CRLF$ +
                                 "Sous-préfecture 3: " + \SousPrefecture[2] + #CRLF$ +
                                 "Sous-préfecture 4: " + \SousPrefecture[3] + #CRLF$ +
                                 "Sous-préfecture 5: " + \SousPrefecture[4] + #CRLF$ +
                                 "Sous-préfecture 6: " + \SousPrefecture[5] + #CRLF$ +
                                 "Région: " + \Region + #CRLF$ +
                                 "Numéro: " + \Numero)
      EndIf
    EndWith
  Next  
EndProcedure

;lireValeurDonnee("Saint")

Procedure CreerBase_SQLite()
  UseSQLiteDatabase()
  
  NomFichier + "SQLite"
  
  If NomFichier
    
    If CreateFile(#FichierSqlite, NomFichier)
      CloseFile(#FichierSqlite)
      
      If OpenDatabase(#FichierSqlite, NomFichier, "", "", #PB_Database_SQLite)
        
        ;Créer une table
        ReqSql = "CREATE TABLE IF NOT EXISTS " + Table + "(Numero TEXT, Departement TEXT, Prefecture TEXT, SP1 TEXT, SP2 TEXT, SP3 TEXT, SP4 TEXT, SP5 TEXT, SP6 TEXT, Region TEXT)"
        DatabaseUpdate(#FichierSqlite, ReqSql)
        
        ;Ajouter des valeurs        
        For i = 0 To ArraySize(Etat())
          ReqSql = "INSERT TO " + Table + "(Numero, Departement, Prefecture, SP1, SP2, SP3, SP4, SP5, SP6, Region) VALUES ('"
          ReqSql + Etat(i)\Numero + "', '"
          ReqSql + Etat(i)\Departement + "', '"
          ReqSql + Etat(i)\Prefecture + "', '"
          ReqSql + Etat(i)\SousPrefecture[0] + "', '"
          ReqSql + Etat(i)\SousPrefecture[1] + "', '"
          ReqSql + Etat(i)\SousPrefecture[2] + "', '"
          ReqSql + Etat(i)\SousPrefecture[3] + "', '"
          ReqSql + Etat(i)\SousPrefecture[4] + "', '"
          ReqSql + Etat(i)\SousPrefecture[5] + "', '"
          ReqSql + Etat(i)\Region + "')"
          DatabaseUpdate(#FichierSqlite, ReqSql)
          Debug ReqSql
        Next i
        
        CloseDatabase(#FichierSqlite)
      Else
        MessageRequester("Erreur", "Impossible d'ouvrir la base")
      EndIf  
    EndIf
  EndIf
EndProcedure


Initialiser()
;Sauvegarder_JSON()
;LireFichier_JSON()
CreerBase_SQLite()
;CallDebugger

DataSection
  Data.s "01", "Ain", "Bourg-en-Bresse"
  Data.i 3
  Data.s "Belley", "Gex", "Nantua"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "02", "Aisne", "Laon"
  Data.i 4
  Data.s "Château-Thierry", "Saint-Quentin", "Soissons", "Vervins"
  Data.s "Nord-Pas-de-Calais-Picardie"
  
  Data.s "03", "Allier", "Moulins"
  Data.i 2
  Data.s "Montluçon", "Vichy"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "04", "Alpes-de-Haute-Provence", "Digne-les-Bains"
  Data.i 3
  Data.s "Barcelonnette", "Castellane", "Forcalquier"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "05", "Hautes-Alpes", "Gap"
  Data.i 1
  Data.s "Briançon"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "06", "Alpes-Maritimes", "Nice"
  Data.i 1
  Data.s "Grasse"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "07", "Ardèche", "Privas"
  Data.i 2
  Data.s "Largentière", "Tournon-sur-Rhône"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "08", "Ardennes", "Charleville-Mézières"
  Data.i 3
  Data.s "Rethel", "Sedan", "Vouziers"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "09", "Ariège", "Foix"
  Data.i 2
  Data.s "Pamiers", "Saint-Girons"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "10", "Aube", "Troyes"
  Data.i 2
  Data.s "Bar-sur-Aube", "Nogent-sur-Seine"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "11", "Aude", "Carcassonne"
  Data.i 2
  Data.s "Limoux", "Narbonne"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "12", "Aveyron", "Rodez"
  Data.i 2
  Data.s "Millau", "Villefranche-de-Rouergue"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "13", "Bouches-du-Rhône", "Marseille"
  Data.i 3
  Data.s "Aix-en-Provence", "Arles", "Istres"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "14", "Calvados", "Caen"
  Data.i 3
  Data.s "Bayeux", "Lisieux", "Vire"
  Data.s "Normandie"
  
  Data.s "15", "Cantal", "Aurillac"
  Data.i 2
  Data.s "Mauriac", "Saint-Flour"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "16", "Charente", "Angoulême"
  Data.i 2
  Data.s "Cognac", "Confolens"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "17", "Charente-Maritime", "La Rochelle"
  Data.i 4
  Data.s "Jonzac", "Rochefort", "Saint-Jean-d'Angély", "Saintes"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "18", "Cher", "Bourges"
  Data.i 2
  Data.s "Saint-Amand-Montrond", "Vierzon"
  Data.s "Centre-Val de Loire"
  
  Data.s "19", "Corrèze", "Tulle"
  Data.i 2
  Data.s "Brive-la-Gaillarde", "Ussel"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "2A", "Corse-du-Sud", "Ajaccio"
  Data.i 1
  Data.s "Sartène"
  Data.s "Corse"
  
  Data.s "2B", "Haute-Corse", "Bastia"
  Data.i 2
  Data.s "Calvi", "Corte"
  Data.s "Corse"
  
  Data.s "21", "Côte-d'Or", "Dijon"
  Data.i 2
  Data.s "Beaune", "Montbard"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "22", "Côtes-d'Armor", "Saint-Brieuc"
  Data.i 3
  Data.s "Dinan", "Guingamp", "Lannion"
  Data.s "Bretagne"
  
  Data.s "23", "Creuse", "Guéret"
  Data.i 1
  Data.s "Aubusson"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "24", "Dordogne", "Périgueux"
  Data.i 3
  Data.s "Bergerac", "Nontron", "Sarlat-la-Canéda"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "25", "Doubs", "Besançon"
  Data.i 2
  Data.s "Montbéliard", "Pontarlier"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "26", "Drôme", "Valence"
  Data.i 2
  Data.s "Die", "Nyons"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s"27", "Eure", "Évreux"
  Data.i 2
  Data.s "Les Andelys", "Bernay"
  Data.s "Normandie"
  
  Data.s "28", "Eure-et-Loir", "Chartres"
  Data.i 3
  Data.s "Châteaudun", "Dreux", "Nogent-le-Rotrou"
  Data.s "Centre-Val de Loire"
  
  Data.s "29", "Finistère", "Quimper"
  Data.i 3
  Data.s "Brest", "Châteaulin", "Morlaix"
  Data.s "Bretagne"
  
  Data.s "30", "Gard", "Nîmes"
  Data.i 2
  Data.s "Alès", "Le Vigan"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "31", "Haute-Garonne", "Toulouse"
  Data.i 2 
  Data.s "Muret", "Saint-Gaudens"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "32", "Gers", "Auch"
  Data.i 2
  Data.s "Condom", "Mirande"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "33", "Gironde", "Bordeaux"
  Data.i 5
  Data.s "Arcachon", "Blaye", "Langon","Lesparre-Médoc","Libourne"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "34", "Hérault", "Montpellier"
  Data.i 2
  Data.s "Béziers", "Lodève"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "35", "Ille-et-Vilaine", "Rennes"
  Data.i 3
  Data.s "Fougères", "Redon", "Saint-Malo"
  Data.s "Bretagne"
  
  Data.s"36", "Indre", "Châteauroux"
  Data.i 3
  Data.s "Le Blanc", "La Châtre", "Issoudun"
  Data.s "Centre-Val de Loire"
  
  Data.s "37", "Indre-et-Loire", "Tours"
  Data.i 2
  Data.s "Chinon", "Loches"
  Data.s "Centre-Val de Loire"
  
  Data.s "38", "Isère", "Grenoble"
  Data.i 2
  Data.s "La Tour-du-Pin", "Vienne"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "39", "Jura", "Lons-le-Saunier"
  Data.i 2
  Data.s "Dole", "Saint-Claude"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "40", "Landes", "Mont-de-Marsan"
  Data.i 1
  Data.s "Dax"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "41", "Loir-et-Cher", "Blois"
  Data.i 2
  Data.s "Romorantin-Lanthenay", "Vendôme"
  Data.s "Centre-Val de Loire"
  
  Data.s "42", "Loire", "Saint-Étienne"
  Data.i 2
  Data.s "Montbrison", "Roanne"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "43", "Haute-Loire", "Le Puy-en-Velay"
  Data.i 2
  Data.s "Brioude", "Yssingeaux"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "44", "Loire-Atlantique", "Nantes"
  Data.i 3
  Data.s "Ancenis", "Châteaubriant", "Saint-Nazaire"
  Data.s "Pays de la Loire"
  
  Data.s "45", "Loiret", "Orléans"
  Data.i 2
  Data.s "Montargis", "Pithiviers"
  Data.s "Centre-Val de Loire"
  
  Data.s "46", "Lot", "Cahors"
  Data.i 2
  Data.s "Figeac", "Gourdon"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "47", "Lot-et-Garonne", "Agen"
  Data.i 3
  Data.s "Marmande", "Nérac", "Villeneuve-sur-Lot"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "48", "Lozère", "Mende"
  Data.i 1
  Data.s "Florac"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "49", "Maine-et-Loire", "Angers"
  Data.i 3
  Data.s "Cholet", "Saumur", "Segré"
  Data.s "Pays de la Loire"
  
  Data.s "50", "Manche", "Saint-Lô"
  Data.i 3
  Data.s "Avranches", "Cherbourg", "Coutances"
  Data.s "Normandie"
  
  Data.s "51", "Marne", "Châlons-en-Champagne"
  Data.i 4
  Data.s "Épernay", "Reims", "Sainte-Menehould", "Vitry-le-François"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "52", "Haute-Marne", "Chaumont"
  Data.i 2
  Data.s "Langres", "Saint-Dizier"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "53", "Mayenne", "Laval"
  Data.i 2
  Data.s "Château-Gontier", "Mayenne"
  Data.s "Pays de la Loire"
  
  Data.s "54", "Meurthe-et-Moselle", "Nancy"
  Data.i 3
  Data.s "Briey", "Lunéville","Toul"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "55", "Meuse", "Bar-le-Duc"
  Data.i 2
  Data.s "Commercy", "Verdun"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "56", "Morbihan", "Vannes"
  Data.i 2
  Data.s "Lorient", "Pontivy"
  Data.s "Bretagne"
  
  Data.s "57", "Moselle", "Metz"
  Data.i 4
  Data.s "Forbach", "Sarrebourg", "Sarreguemines", "Thionville"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "58", "Nièvre", "Nevers"
  Data.i 3
  Data.s "Château-Chinon (Ville)", "Clamecy", "Cosne-Cours-sur-Loire"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "59", "Nord", "Lille"
  Data.i 5
  Data.s "Avesnes-sur-Helpe", "Cambrai", "Douai", "Dunkerque", "Valenciennes"
  Data.s "Nord-Pas-de-Calais-Picardie"
  
  Data.s "60", "Oise", "Beauvais"
  Data.i 3
  Data.s "Clermont", "Compiègne", "Senlis"
  Data.s "Nord-Pas-de-Calais-Picardie"
  
  Data.s "61", "Orne", "Alençon"
  Data.i 2
  Data.s "Argentan", "Mortagne-au-Perche"
  Data.s "Normandie"
  
  Data.s "62", "Pas-de-Calais", "Arras"
  Data.i 6
  Data.s "Béthune", "Boulogne-sur-Mer", "Calais", "Lens", "Montreuil", "Saint-Omer"
  Data.s "Nord-Pas-de-Calais-Picardie"
  
  Data.s "63", "Puy-de-Dôme", "Clermont-Ferrand"
  Data.i 4
  Data.s "Ambert", "Issoire", "Riom", "Thiers"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "64", "Pyrénées-Atlantiques", "Pau"
  Data.i 2
  Data.s "Bayonne", "Oloron-Sainte-Marie"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "65", "Hautes-Pyrénées", "Tarbes"
  Data.i 2
  Data.s "Argelès-Gazost", "Bagnères-de-Bigorre"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "66", "Pyrénées-Orientales", "Perpignan"
  Data.i 2
  Data.s "Céret", "Prades"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "67", "Bas-Rhin", "Strasbourg"
  Data.i 4
  Data.s "Haguenau", "Molsheim", "Saverne", "Sélestat"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "68", "Haut-Rhin", "Colmar"
  Data.i 3
  Data.s "Altkirch", "Mulhouse", "Thann"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "69", "Rhône", "Lyon"
  Data.i 1
  Data.s "Villefranche-sur-Saône"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "70", "Haute-Saône", "Vesoul"
  Data.i 1
  Data.s "Lure"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "71", "Saône-et-Loire", "Mâcon"
  Data.i 4
  Data.s "Autun", "Chalon-sur-Saône", "Charolles", "Louhans"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "72", "Sarthe", "Le Mans"
  Data.i 2
  Data.s "La Flèche", "Mamers"
  Data.s "Pays de la Loire"
  
  Data.s "73", "Savoie", "Chambéry"
  Data.i 2
  Data.s "Albertville", "Saint-Jean-de-Maurienne"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s "74", "Haute-Savoie", "Annecy"
  Data.i 3
  Data.s"Bonneville", "Saint-Julien-en-Genevois", "Thonon-les-Bains"
  Data.s "Auvergne-Rhône-Alpes"
  
  Data.s"75", "Paris", "Paris"
  Data.i 0
  ;Data.s ""
  Data.s "Île-de-France"
  
  Data.s "76", "Seine-Maritime", "Rouen"
  Data.i 2
  Data.s "Dieppe", "Le Havre"
  Data.s "Normandie"
  
  Data.s "77", "Seine-et-Marne", "Melun"
  Data.i 4
  Data.s "Fontainebleau", "Meaux", "Provins","Torcy"
  Data.s "Île-de-France"
  
  Data.s "78", "Yvelines", "Versailles"
  Data.i 3
  Data.s "Mantes-la-Jolie", "Rambouillet", "Saint-Germain-en-Laye"
  Data.s "Île-de-France"
  
  Data.s "79", "Deux-Sèvres", "Niort"
  Data.i 2
  Data.s "Bressuire", "Parthenay"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "80", "Somme", "Amiens"
  Data.i 3
  Data.s "Abbeville", "Montdidier", "Péronne"
  Data.s "Nord-Pas-de-Calais-Picardie"
  
  Data.s "81", "Tarn", "Albi"
  Data.i 1
  Data.s "Castres"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "82", "Tarn-et-Garonne", "Montauban"
  Data.i 1
  Data.s "Castelsarrasin"
  Data.s "Languedoc-Roussillon-Midi-Pyrénées"
  
  Data.s "83", "Var", "Toulon"
  Data.i 2
  Data.s "Brignoles", "Draguignan"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "84", "Vaucluse", "Avignon"
  Data.i 2
  Data.s "Apt", "Carpentras"
  Data.s "Provence-Alpes-Côte d'Azur"
  
  Data.s "85", "Vendée", "La Roche-sur-Yon"
  Data.i 2
  Data.s "Fontenay-le-Comte", "Les Sables-d'Olonne"
  Data.s "Pays de la Loire"
  
  Data.s "86", "Vienne", "Poitiers"
  Data.i 2
  Data.s "Châtellerault", "Montmorillon" 
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "87", "Haute-Vienne", "Limoges"
  Data.i 2
  Data.s "Bellac", "Rochechouart"
  Data.s "Aquitaine-Limousin-Poitou-Charentes"
  
  Data.s "88", "Vosges", "Épinal"
  Data.i 2
  Data.s "Neufchâteau", "Saint-Dié-des-Vosges"
  Data.s "Alsace-Champagne-Ardenne-Lorraine"
  
  Data.s "89", "Yonne", "Auxerre"
  Data.i 2
  Data.s "Avallon", "Sens"
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "90", "Territoire de Belfort", "Belfort"
  Data.i 0
  ;Data.s ""
  Data.s "Bourgogne-Franche-Comté"
  
  Data.s "91", "Essonne", "Évry"
  Data.i 2
  Data.s "Étampes", "Palaiseau"
  Data.s "Île-de-France"
  
  Data.s "92", "Hauts-de-Seine", "Nanterre"
  Data.i 2
  Data.s "Antony", "Boulogne-Billancourt"
  Data.s "Île-de-France"
  
  Data.s "93", "Seine-Saint-Denis", "Bobigny"
  Data.i 2
  Data.s "Le Raincy", "Saint-Denis"
  Data.s "Île-de-France"
  
  Data.s "94", "Val-de-Marne", "Créteil"
  Data.i 2
  Data.s "L'Haÿ-les-Roses", "Nogent-sur-Marne"
  Data.s "Île-de-France"
  
  Data.s "95", "Val-d'Oise", "Cergy, (chef-lieu à Pontoise)"
  Data.i 3
  Data.s "Argenteuil", "Pontoise", "Sarcelles"
  Data.s "Val-d’Oise"
  
  Data.s "971", "Guadeloupe", "Basse-Terre"
  Data.i 1
  Data.s "Pointe-à-Pitre"
  Data.s "Guadeloupe"
  
  Data.s "972", "Martinique", "Fort-de-France"
  Data.i 3
  Data.s "La Trinité", "Le Marin", "Saint-Pierre"
  Data.s "Martinique"
  
  Data.s "973", "Guyane", "Cayenne"
  Data.i 1
  Data.s "Saint-Laurent-du-Maroni"
  Data.s "Guyane"
  
  Data.s "974", "La Réunion", "Saint-Denis"
  Data.i 3 
  Data.s "Saint-Benoît", "Saint-Paul", "Saint-Pierre"
  Data.s "La Réunion"
  
  Data.s "976", "Mayotte", "Mamoudzou"
  Data.i 0
  ;Data.s ""
  Data.s "Mayotte "
EndDataSection

Re: Comment créer une base de données SQLite

Publié : dim. 14/févr./2016 14:46
par falsam
Bonjour Micoute

La syntaxe de INSERT est INSERT INTO et non pas INSERT TO
Habitue toi aussi en phase de débug à utiliser la fonction DatabaseError() après chaque opération DatabaseUpdate()

Code : Tout sélectionner

Debug DatabaseError()
Remplace NomFichier + "SQLite" par NomFichier + ".SQLite"

Re: Comment créer une base de données SQLite

Publié : dim. 14/févr./2016 15:09
par Micoute
Mais bon sang, mais c'est bien sûr !

Merci beaucoup falsam, c'était sous mes yeux et je ne le voyais même pas !

Re: Comment créer une base de données SQLite

Publié : dim. 14/févr./2016 15:23
par falsam
Il n'est pas rare dans une base de données d'enregistrer des données contenant des apostrophes et c'est le cas dans ta data section.

Que ce soit en Pphp, Javascript ou PureBasic, SQL n'aime pas ça.

L'apostrophe est considéré comme un délimitateur de colonne pour les fonction SQL.

Tu dois échapper tes données avant de les intégrer à ta requête.

Crée une procédure qui va te permettre de double l'apostrophe

Code : Tout sélectionner

Procedure.s DoubleSpec(String.s)
  Protected Buffer.s
  Buffer = ReplaceString(String, "'", "''")
  ProcedureReturn Buffer
EndProcedure
et remplace

Code : Tout sélectionner

          ReqSql + Etat(i)\Departement + "', '"
          ReqSql + Etat(i)\Prefecture + "', '"
          ReqSql + Etat(i)\SousPrefecture[0] + "', '"
          ReqSql + Etat(i)\SousPrefecture[1] + "', '"
          ReqSql + Etat(i)\SousPrefecture[2] + "', '"
          ReqSql + Etat(i)\SousPrefecture[3] + "', '"
          ReqSql + Etat(i)\SousPrefecture[4] + "', '"
          ReqSql + Etat(i)\SousPrefecture[5] + "', '"
          ReqSql + Etat(i)\Region + "')"
par

Code : Tout sélectionner

         ReqSql + DoubleSpec(Etat(i)\Departement) + "', '"
          ReqSql + DoubleSpec(Etat(i)\Prefecture) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[0]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[1]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[2]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[3]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[4]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\SousPrefecture[5]) + "', '"
          ReqSql + DoubleSpec(Etat(i)\Region) + "')"
■ L'autre solution est d'utiliser la fonction EscapeString() de cette manière.

Code : Tout sélectionner

          ReqSql + EscapeString(Etat(i)\Departement, #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\Prefecture, #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[0], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[1], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[2], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[3], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[4], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\SousPrefecture[5], #PB_String_EscapeXML) + "', '"
          ReqSql + EscapeString(Etat(i)\Region, #PB_String_EscapeXML) + "')"
Dans ce cas tu n'as plus besoin de créer la procédure DoubleSpec()

Par contre il faut utiliser UnescapeString() pour relire les données comme le montre cet exemple

Code : Tout sélectionner

Buffer.s =  EscapeString("Côte d'azur", #PB_String_EscapeXML)

Debug Buffer

Debug UnescapeString(Buffer, #PB_String_EscapeXML)

■ Tu peux utiliser SQLite Explorer pour explorer ta base de données

:arrow: http://www.purebasic.fr/french/viewtopi ... 60#p177460

Re: Comment créer une base de données SQLite

Publié : dim. 14/févr./2016 20:59
par Micoute
Merci beaucoup falsam, je me coucherai moins bête ce soir, car je viens d'apprendre beaucoup de choses utiles.