[..] Aide SQLite

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

[..] Aide SQLite

#1

Message par ricky »

Hello,

j'aimerais commencer à utiliser SQLite, mais je n'ai pas trouvé d'aide (à part la description des fonctions dans le Help) et dans le forum pas d'explication claire. J'aimerais savoir le minimum qu'il faut faire pour créer une table et l'utiliser.

Voilà ce que j'aimerais faire, aller dans un certain dossier lister tous les fichiers et sauvegarder le "chemin, nom, md5, date et heure de création" dans la bdd. Et en suite de comparer avec un autre fichier de Bdd (pour ça j'ai trouvé : http://autoitscript.fr/forum/viewtopic. ... UDF+SQLite )

Merci d'avance pour votre aide.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Aide SQLite

#2

Message par Tlem »

Ceci ne vous aide pas ?
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Aide SQLite

#3

Message par matwachich »

Bah déjà, il faut un minimum de notion de SQL
Après, franchement, ne me dites pas que les exemple de _SQLite_Startup, _SQLite_Exec, _SQLite_GetTable, _SQLite_GetTable2d, _SQLite_Query ne sont pas assez parlant!

lancez les, et analysez bien leurs sources, elle suffisent amplement pour ce que vous voulez faire.

PS: Il parle de SQLite Tlem, pas de SQL (Serveur etc...)
► Afficher le texte
Modifié en dernier par matwachich le mer. 23 mars 2011 15:20, modifié 1 fois.
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Aide SQLite

#4

Message par ricky »

Tlem a écrit :Ceci ne vous aide pas ?
Je l'ai bien trouvé mais ça parle de Ado, pas de SQLite, donc, je me suis pas amusé à lire le topic complet...

@matwachich : je vais regarder, mais ça m'a l'air bien complexe...
Sinon, que me conseilles-tu d'utiliser pour ce que je veux faire? Pour moi, c'est la solution la plus adaptée...
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Aide SQLite

#5

Message par matwachich »

Regarde mon précédent message (le spoiler)
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Aide SQLite

#6

Message par ricky »

Merci beaucoup, c'est vraiment la grande classe.
Est-il possible de créer plusieurs tables dans le même fichier, par exemple un comme tu as fait et une autre avec d'autres infos mais pas avec le même nombre de lignes et /ou colonnes?

Edit :

Dans le chemin, comment faire quand on a C:\WINDOWS\DRIVERS\IASTOR\test.exe et separer en deux variables :
$chemin = C:\WINDOWS\DRIVERS\IASTOR\
$fichier = test.exe

J'ai regardé avec toutes les fonctions avec string, mais je ne vois pas comment faire. StringSplit serait peut-être une solution, mais ça me sépare en plein de lignes si je fais avec le "\"...

Merci d'avance pour votre aide...
Modifié en dernier par ricky le mer. 23 mars 2011 16:07, modifié 2 fois.
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Aide SQLite

#7

Message par matwachich »

Evidement que c'est possible!
Suffit de refaire la première ligne

Code : Tout sélectionner

_SQLite_Exec <<CREATE TABLE nom_de_la_table (colone1, colone2...)>>
Fais un tour dans C:\Program Files\AutoIt3\Extras\SQLite, il y a un fichier d'aide très utile!
Et aussi, une lecture de cette partie du tutoriel de M@téo21 serai plus que bénéfique!
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Aide SQLite

#8

Message par ricky »

Merci, regarde mon message d'au-dessus, je l'ai édité...
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Aide SQLite

#9

Message par matwachich »

Déjà, dans le script que je t'ai donné, j'ai simplifier le truc:
Je fais une recherche des NOMS de fichiers uniquement, et comme j'ai le dossier dans $dir, je fais: $dir & "\" & $fichier,
c'est à dire, que ils sont déjà séparer.

Maintenant, ce que tu demande est simple:

Code : Tout sélectionner

; Avoir le nom du fichier
$nom = StringTrimLeft($chemin, StringInStr($chemin, "\", 1, -1))

; Avoir le dossier
$dossier = StringLeft($chemin, StringInStr($chemin, "\", 1, -1) - 1)
PS: Apprend à ne jamais utiliser de variable contenant un chemin de dossier avec un '\' à la fin (exemple: "c:\windows\")
Car la plupart des fonctions AutoIt retournent les chemins de dossiers sous la forme "c:\windows", cela évitera des confusions
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Aide SQLite

#10

Message par jchd »

Petit commentaire au sujet de la création de la table : il est hautement préférable de spécifier un type explicite pour chaque colonne, en l'occurence TEXT (ou CHAR) pour chaque colonne.
En ce qui concerne le type de la date, tout dépend si l'on souhaite minimiser la taille de la base (je n'imagine pas que cela ait une quelconque importance dans le cas qui nous est soumis) auquel cas on a intérêt à utiliser un "timestamp" qui est stocké sous forme d'un entier. Si l'on souhaite conserver sa lisibilité sans avoir recours à un programme spécifique, il vaut mieux de loin la stocker sous forme texte, mais par pitié au format ISO : "AAAA/MM/JJ hh:mm:ss". L'énorme avantage est que ce format se trie naturellement tout en étant parfaitement lisible.

Pourquoi insisté-je sur un type texte explicite en particulier pour les noms de fichiers ? Parce que si un fichier se nomme 007 ou 123.456 et que la colonne ne porte pas de type, SQLite va utiliser l'affinité par défaut et risque le stocker sous une forme d'entier ou de numérique flottant. L'affinité est déterminée pour chaque _valeur_ de chaque range donc dans une liste de fichiers aux noms clairement textuels (monscript.exe sera stocké en texte) on pourrait trouver des noms stockés en entiers ou en flottants, ce qui risque de mettre un certain bazar lors de traitements... Ainsi 007 deviendra 7 et hop, une incohérence !

Il n'y a pratiquement jamais de bonne raison de ne pas spécifier un type pour chaque colonne.

Rappel : SQLite n'oblige cependant aucunement à respecter le type déclaré dans une colonne et stockera joyeusement un BLOB dans une colonne INTEGER ou un flottant dans une colonne texte. Par contre, ce sera aux applications utilisatrices de s'y retrouver, ce qui peut provoquer des erreurs délicates à identifier.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [..] Aide SQLite

#11

Message par ricky »

@jchd : merci pour tes précisions.
Concernant la date, tu as raison, pour l'instant ce n'était pas le plus important et je ne comptais pas la lire (fait par un programme : http://autoitscript.fr/forum/viewtopic.php?f=3&t=7176), mais c'est une bonne remarque et je vais l'appliquer.

Concernant le type pour chaque colonne, tu parles dans la déclaration :

Code : Tout sélectionner

_SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS fichiers (id INT NOT NULL, path TEXT, name TEXT, md5 TEXT, created TEXT)')
Changer par :

Code : Tout sélectionner

_SQLite_Exec(-1, 'CREATE TABLE IF NOT EXISTS fichiers (id INT NOT NULL, path TEXT, name TEXT, md5 [b]CHAR[/b], created [b]CHAR[/b])')
J'ai bien compris?
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] Aide SQLite

#12

Message par matwachich »

Oui c'est bien de cela qu'il parle
Pour bien utiliser les types SQL, se référer à la doc SQLite fourni dans le répertoire extra du dossier d'installation d'AutoIt
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Aide SQLite

#13

Message par Tlem »

ricky a écrit :Je l'ai bien trouvé mais ça parle de Ado, pas de SQLite, donc, je me suis pas amusé à lire le topic complet...
Ah !!!
Pourtant en faisant une recherche (sur le mot SQLite) de trois secondes sur la page, j'arrive à ceci : http://www.autoitscript.fr/forum/viewto ... 816#p16816

:shock:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Aide SQLite

#14

Message par jchd »

Pour SQLite, CHAR et TEXT sont absolument équivalents : la colonne est spécifiée TEXT. Beaucoup de moteurs de BDD demandent pour du texte une taille, fixe ou variable, et l'application s'y trouve contrainte. SQLite est extrêmement flexible de ce point de vue, car on peut stocker sans y penser un texte html de 25 Ko dans une colonne décrite en CHAR(5) ou des milliers de rangées contenant des codes postaux dans du VARCHAR(4096) sans ressentir d'hémorragie d'espace ni se prendre dans les dents des tonnes de codes d'erreur.

Ma remarque était générale et l'idée de repasser une couche à ce sujet m'est venue en voyant (en diagonale) un des posts parlant de création de table avec "colonne1, colonne2, ...". Peu importe d'ailleurs, ce n'est qu'une remarque au passage qui ne vise rien ni personne en particulier. Il se trouve que je suis amené à apporter de l'aide à des gens qui découvrent SQLite et bien souvent je trouve ce genre de choses, qui sont des sources inutiles de soucis ultérieurs lorsque l'application (et donc la BDD) évolue ou est transposée dans un autre moteur.

Dans le même ordre d'idées, on ne voit pas assez souvent de foreign keys (clés étrangères), de contraintes, d'index correctement définis, etc. Même si, pour les premiers tests, la BDD fait son boulot minimaliste correctement, on est souvent amené à coder par la suite dans l'appli ou les applis des vérifications d'existence, d'unicité ou autres qui devraient être transcrites dans les mécanismes de contraintes et/ou de relations dont SQL et SQLite permettent l'expression (de façon bien plus efficace et sûre).

Ce point de vue n'est pas du pédantisme mal placé : faire le petit effort initial pour exprimer correctement ces contraintes et relations est un énorme gain de temps (codage), d'énergie (mise au point) et de simplicité dans le code (maintenance), sans parler d'efficacité brute chrono "en main".
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
noman
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 08 déc. 2008 01:08
Status : Hors ligne

Re: [..] Aide SQLite

#15

Message par noman »

Bonjour,

Pour vous aider voici un petit utilitaire très utile qui permet de visualiser, créer, éditer des bases de donnée sqlite.

http://www.mediafire.com/?twa3t331vbby31u

Bon courage
...
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Aide SQLite

#16

Message par jchd »

Plutôt que de cliquer sur un lien d'upload douteux et bourré de pub pour récupérer un outil obsolete et mal fichu, allez donc télécharger SQLite Expert (version Free ou Pro selon vos besoins) sur le site de l'auteur.
Vous m'en direz des nouvelles !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
noman
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 08 déc. 2008 01:08
Status : Hors ligne

Re: [..] Aide SQLite

#17

Message par noman »

Il n'y a de douteux que vos propos, je ne répond pas à un utilisateur pour me faire recaler de façon gratuite et injustifié par un soixantenaire aigris qui se prend trop au sérieux.

Le respect n'est pas une option dans la vie, y compris envers le travail d'autrui. Mais la suffisance de vos propos démontre bien à quel point se principe de base vous passe au dessus de la tête.

Qu'avez de mieux à apporté que cet outil obsolète et mal fichus ? Le travail d'un autre ... Ha ha ha excusez moi mais la, je me gausse.

Enfin bref ricky choisira la solution qu'il préfère mais je ne pense pas que l'usine à gaz que vous lui avez conseillé l'aidera sachant qu'il débute...
...
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Aide SQLite

#18

Message par jchd »

Bah, suffisance, respect, aigreur, travail d'autrui et autres âneries pouvaient rester où elles dormaient...

Cette version est définitivement obsolète (repose sur un moteur SQLite du 31/01/2008), est douteuse (v1.3 qui ne figure même pas dans l'historique du produit sur SourceForge), n'est plus supportée et n'est pas de vous, pas plus que Expert n'est de moi, évidemment.

Dire clairement qu'un outil est dépassé n'a rien à voir avec du mépris. Par ailleurs je ne suis pas le seul à penser qu'Expert est l'un des meilleurs outils SQLite disponibles, y compris dans sa version gratuite. C'est peut-être parce que j'en ai testé des palanquées et, qu'ayant finalement choisi ce produit en version Pro, je l'emploie 16 heures par jour. Qu'il utilise un moteur à jour et qu'il offre des possibilités étendues ne signifie pas que c'est une usine à gaz, il en existe d'ailleurs que je ne mentionne pas ici.

Faire débuter un néophyte sur des bases dépassées n'a rien d'une aide, bien au contraire. A défaut de pouvoir employer des mécanismes sûrs et puissants en s'appuyant sur un moteur à jour, il devra faire effectuer le même boulot par son ou ses applications, en se pelant du code inutile à la main (foreign keys par exemple). Quel cadeau !
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Aide SQLite

#19

Message par Tlem »

L'idéal aurait été de donner ce lien : http://sourceforge.net/projects/sqliteb ... tebrowser/

Vous y trouverez toutes les versions, ainsi que la 2.0 beta1 qui date de décembre 2009 (tout de même) ... :roll:
Vous constaterez que même si le projet n'avance pas beaucoup, il y a quand même un peut d'activité : http://sourceforge.net/projects/sqlitebrowser/forums

Ceci dit, selon les besoins, la hache n'est pas forcément nécessaire pour couper un arbrisseau (bien que ce soit plus efficace et plus propre). :P
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: [..] Aide SQLite

#20

Message par jchd »

Dans ce cas, pourquoi ne pas citer aussi [plutôt] le module SQLite pour Firefox, disponible ici qui lui est à jour, parle hexagonal et est très convivial ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre