[R] Écrire dans une BDD SQL à distance

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Écrire dans une BDD SQL à distance

#41

Message par blacksoul305 »

Woarf... Impressionné, je ne pense pas que j'aurai pu faire ce code là.

Deux petites choses pour la compréhension de votre:

1) Comment Autoit peut ouvrir une base de donnée sans que j'en donne le mot de passe ni le nom ?

2) Je n'ai pas bien compris cette partie là:
► Afficher le texte
Modifications:

Comment aménager le code de façon à ce qu'il récupère les informations (login et mdp) du client ? 2 programmes distants ne peuvent utiliser les mêmes variables, du moins, je veux dire, si dans le client, le login qui est envoyé, pour lui est la variable $login, si je mes dans le serveur (pour qu'il puisse écrire dans la BDD) $login, il ne va pas écrire le login que lui a envoyé le client, si ?

Ma base de donnée donne cela, j'ai des tables pour les configurations et une qui se nomme "accounts". Dans celle-ci il y a un tableau avec comme première case: "AccountID" et une seconde avec "Password".
Comment aménager le code de façon à écrire le login dans "AccountID" et pareil pour "Password" ?

Merci en tout cas pour l'aide que vous me donnez, et merci pour le code !
Étudiant en 2ème année de Licence Informatique.
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: [..] Écrire dans une BDD SQL à distance

#42

Message par jchd »

SQLite étant un moteur "embedded" (i.e. intégré à une ou plusierus applications), il n'a pas de structure client-serveur. Une BDD SQLite réside dans un unique fichier (journaux temporaires mis à part) il n'a pas à ajouter une couche d'autorisation d'accès. L'on peut d'ailleurs toujours en plaquer une par le mécanisme que le système de fichiers sous-jacent offre (droits d'accès au répertoire).

Ces fonctions X(), XX() permettent de "quoter" une chaîne littérale pour éviter un souci si elle contient une quote significative (on la double dans ce cas). Y() et YY() gère des BLOBS (valeurs binaires gébériques) et Z(), ZZ() des numériques.
X($s) équivaut à _SQLite_Escape($s)
XX($s) " ',' & _SQLite_Escape($s)
etc.

Les informations de login doivent être reçues par le serveur (via TCP par exemple). J'ai utilisé des variables "en dur" pour la simplicité du code.
Renommer Comptes en Accounts ne pose aucun problème.
Par contre, je recommande toujours d'utiliser une colonne Id (INTEGER PRIMARY KEY) explicite. Du coup renommer AccountID en Login ne pose pas plus de problème.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Écrire dans une BDD SQL à distance

#43

Message par blacksoul305 »

Enfin je suis arrivé à mes fins !

J'ai donc un serveur qui reçoit les infos nécessaire via un client distant par le biais d'un serveur de chat IRC, un serveur donc qui appelle un programme qui lit dans la section "Username" et "Passord" les valeurs à écrire, ce programme ouvre Navicat, accède à ma BDD et à la table correspondante via la commande MouseClick() et enfin, quitte la table en sauvegardant les changements puis enfin, ferme le processus de Navicat.
D'accord la dernière partie est mais vraiment bidon (car elle ne fonctionnera pas à deux envois en même temps) mais je n'ai pas pu faire autrement...

Je remercie Sablier94 et Tlem pour leurs suggestions d'idées.
PandiPanda pour l'aide à coder la fonction client/serveur.
jchd pour les informations à propos de MySQL et SQLite et son code.

Je pense que je vous dois bien cela, voici les codes:

Serveur
► Afficher le texte
Client
► Afficher le texte
BDDWriter
► Afficher le texte
Je vous remercie une fois de plus !

EDIT: Voilà, j'aimerai porter une petite amélioration au niveau de mon programme ! J'ai essayé de la placer seul mais, j'u suis en fin compte pas arrivé. En fait j'ai placé une CheckBox qui, une fois cochée, m'envoie une valeur constante que le serveur est prêt à recevoir. Si il l'a reçoit, l'utilisateur a aimé, sinon, il ne l'a pas aimé. Bien sur, j'ai envie de voir si beaucoup de personnes ont aimés le programme donc, je constitue un autre fichier ini qui va contenir au fur et à mesure le nombre d'utilisateurs ayant aimés le programme. Cependant, je ne suis pas sur que le serveur la reçoit, et donc, je ne vois pas si l'utilisateur a aimé ou pas ...

Je vous laisse donc voir par vous même:

Serveur
► Afficher le texte
Client
► Afficher le texte
PS: si il était possible d'ajouter soit dans une section appart, soit dans un autre fichier .ini, le nombre de fois où le programme a été testé ? (du moins, le nombre de fois où il a envoyé des infos à l'ordinateur)
► Afficher le texte
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
PandiPanda
Membre émérite
Membre émérite
Messages : 656
Enregistré le : mar. 19 juil. 2011 14:03
Localisation : Bruxelles
Status : Hors ligne

Re: [..] Écrire dans une BDD SQL à distance

#44

Message par PandiPanda »

En vous basant sur l'envoi TCP() un peu plus haut vous auriez pu en tirez quelque chose ...

Dans le script "serveur";
remplacer la fonction _FileIniWrite($Quoi) par celle ci;
► Afficher le texte
Dans le script "client";
remplacer dans le case $Checkbox1 "TCPSend($masock, 25698)" par ceci;

Code : Tout sélectionner

TCPSend($masock, "PRIVMSG " & $channel & " :" & "Aimer" & @CRLF); envoi
Ca devrai être suffisant
La seule moralité qui tienne dans un monde cruel est la chance. Impartiale. Équitable. Vraie
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: [..] Écrire dans une BDD SQL à distance

#45

Message par blacksoul305 »

Super, c'est impeccable ! Je vais essayer de bosser sur ce code, car pour l'instant, c'est un peu comme le Tarot, du mal à rentrer ! Haha !

Merci encore PandiPanda !
Étudiant en 2ème année de Licence Informatique.
Répondre