[R] Problème avec une requète SQLite

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
vilsafur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 25 sept. 2013 11:04
Status : Hors ligne

[R] Problème avec une requète SQLite

#1

Message par vilsafur »

Bonjour,

Depuis quelques jours, j'ai un problème avec mes requêtes SQLite, dès que j'insère un 'WHERE', la requête ne me retourne aucune valeur.

Voici les 3 fonctions utilisées à la suite :

Code : Tout sélectionner

_SQLite_Query($bdd, "SELECT * FROM VISITE WHERE Id = '" & $id & "';", $hQuery)
_SQLite_FetchData($hQuery, $aRow)
_SQLite_QueryFinalize($hQuery)
Si je fait un _arrayDisplay($aRow), ça me renvoie un tableau vide.

Avez-vous une idée ?

Merci d'avoir pris le temps de lire mon problème.

Cordialement
Modifié en dernier par vilsafur le lun. 02 déc. 2013 10:31, modifié 1 fois.
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: [..] Problème avec une requète SQLite

#2

Message par jchd »

Etant donné que tu ne donnes aucun indice ni sur le schéma ni sur le contenu de la table, on n'est guère avancé !

Les meilleures boules de cristal doivent subir une maintenance et une calibration annuelles et il se trouve que la mienne est encore à l'atelier.

Néanmoins je me lance à te demander de tester la requête suivante :

Code : Tout sélectionner

Local $aRows, $nRows, $nCols
_SQLite_GetTable2d($bdd, "SELECT * FROM VISITE WHERE Id = " & $id & ";", $aRows, $nRows, $nCols)
_ArrayDisplay($aRows)
des fois que Id soit numérique...

Bannir les fonctions bas-niveau au profit de _SQLite_GetTable[2d] ou *_QuerySingleRow.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
vilsafur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 25 sept. 2013 11:04
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#3

Message par vilsafur »

jchd a écrit :Etant donné que tu ne donnes aucun indice ni sur le schéma ni sur le contenu de la table, on n'est guère avancé
Excuse moi pour le manque d'information, je ne sais pas lesquels il vous faut.

Après meilleur analyse, il se figure que le where fonctionne pour cette requête mais pas pour une autre. désolé.

Voici la requête :

Code : Tout sélectionner

_SQLite_QuerySingleRow($bdd, 'SELECT * FROM ENTREPRISE WHERE CUSTOMER_KEY = '&$customKey&';', $aRow)
la table contient les champs suivants :
► Afficher le texte
Aucun champs n'a de type définit.
$customKey retourne bien la custom Key demandée.

La requête que tu m'a demandée me retourne bien le nom des champs mais aucune valeur ensuite.
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: [..] Problème avec une requète SQLite

#4

Message par jchd »

Code : Tout sélectionner

_SQLite_QuerySingleRow($bdd, "SELECT * FROM ENTREPRISE WHERE CUSTOMER_KEY = '" & $customKey & "';", $aRow)
Et je dirais même, au cas où $customKey puisse contenir une simple quote :

Code : Tout sélectionner

_SQLite_QuerySingleRow($bdd, "SELECT * FROM ENTREPRISE WHERE CUSTOMER_KEY = " & _SQLITE_FastEscape($customKey) & ";", $aRow)
Aucun champ n'a de type défini.
Mauvais choix : ça ouvre la voie à une foultitude de bogues tous plus impénétrables les uns que les autres.
Après meilleur analyse, il se figure que le where fonctionne pour cette requête mais pas pour une autre. désolé.
...
La requête que tu m'a demandée me retourne bien le nom des champs mais aucune valeur ensuite.
Bon, soyons clair comme du cristal : quelle requête ne fonctionne pas, du coup ?
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#5

Message par mikell »

Peut-être aussi

Code : Tout sélectionner

... WHERE Customer_Key = [" & $customKey & "];", $aRow)
ça aiderait de savoir ce que contient exactement $customKey
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
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: [..] Problème avec une requète SQLite

#6

Message par jchd »

Non mikell, je ne pense pas que la table contienne une colonne ayant pour nom la valeur de la variable $customKey et qu'il y ait un sens à ce que ces deux colonnes soient égales.

select * from matable where colA = [123];

Ici, 123 (ou toute autre valeur contenue dans la variable $customKey) sera évalué comme nom de colonne.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#7

Message par mikell »

Ok je n'avais pas percuté sur le fait que cette syntaxe était réservée aux noms d'objets
Reste quand même que savoir ce que contient $customKey permettrait peut-être de comprendre pourquoi il obtient une erreur
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
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: [..] Problème avec une requète SQLite

#8

Message par jchd »

++
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
vilsafur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 25 sept. 2013 11:04
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#9

Message par vilsafur »

Merci pour vos réponses.
jchd a écrit :

Code : Tout sélectionner

_SQLite_QuerySingleRow($bdd, "SELECT * FROM ENTREPRISE WHERE CUSTOMER_KEY = '" & $customKey & "';", $aRow)
Et je dirais même, au cas où $customKey puisse contenir une simple quote :

Code : Tout sélectionner

_SQLite_QuerySingleRow($bdd, "SELECT * FROM ENTREPRISE WHERE CUSTOMER_KEY = " & _SQLITE_FastEscape($customKey) & ";", $aRow)
J'ai déjà testé le code avec les simple quote, il ne me retourne également aucune valeur, je vais essayer avec le _SQLITE_FastEscape().
jchd a écrit :
Aucun champ n'a de type défini.
Mauvais choix : ça ouvre la voie à une foultitude de bogues tous plus impénétrables les uns que les autres.
Entendu, je vais définir l'ensemble de mes champs dans ce cas, mais en définissant le champ Custom_Key en INT, l'erreur persistait.
Pour répondre à ta dernière question, c'est bien la requête _SQLITE_QuerySingleRow() qui ne fonctionne pas.
mikell a écrit :Reste quand même que savoir ce que contient $customKey permettrait peut-être de comprendre pourquoi il obtient une erreur
$customKey contient un identifiant unique, numérique sous la forme XXXXXX.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#10

Message par mikell »

Peut-être que c'est au remplissage des champs qu'il faudrait utiliser _SQLITE_FastEscape
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
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: [..] Problème avec une requète SQLite

#11

Message par jchd »

Quite à me répéter, je préconise fortement, fermement, sévèrement, impérativement, brutalement l'emploi de SQLite Expert (la version gratuite fait déjà beaucoup de choses) pour débusquer les problèmes potentiels ou avérés.

Une fois la rangée problématique localisée, l'éditeur hexa permet de savoir ce que le champ contient en réalité.

Sinon, on peut ausi avoir à convertir le type de données précédemment enregistrées.
Par exemple : update maTable set maColonne = cast(maColonne as integer) where typeof(maColonne) = 'text';
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
vilsafur
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 25 sept. 2013 11:04
Status : Hors ligne

Re: [..] Problème avec une requète SQLite

#12

Message par vilsafur »

Problème résolu,

J'ai correctement ajouté les types de champs à la base et fait quelques essai grâce à SQLITE Expert.

@jchd : Je l'utilisait déjà, mais uniquement pour voir mes datas.

Merci à tous pour l'aide précieuse que vous m'avez apporté.

Cordialement
Répondre