[Résolu] Récupérer des données SQL

Vous voulez de l'aide ? Postez ici :)
Post Reply
Aangrod
Posts: 35
Joined: 30 Jun 2013, 10:02

[Résolu] Récupérer des données SQL

Post by Aangrod »

Bonjour à tous et à toutes,

Je souhaite qu'Actionaz communique avec une base de donnée SQL mais je suis confronté à un léger problème.
Je parviens à me connecter à ma base de donnée et à écrire dedans, mais dès lors que je souhaite y récupérer des données, cela ne fonctionne pas. Ou plutôt, cela ne fonctionne qu'à moitié.
La fonction fetchResult() me renvoie des valeurs vides ("") dans ce que je suppose être un tableau, mais en renvoie autant qu'il y a de valeurs à renvoyer.

Voici un exemple (parmi tant d'autres) de requête SQL que j'ai testé :
"SELECT data FROM bdd.user WHERE id = 1", où la BDD s'appelle "bdd", contient la table "user" et les colonnes "id" et "data".
Ma requête semble être formulée convenablement, et les données me sont d'ailleurs bien retournées si je passe par phpMyAdmin par exemple. S'agirait-il d'un bug?

Dans le cas contraire quel devrait être le format de ma requête SQL?

D'avance, merci.
Last edited by Aangrod on 19 Sep 2013, 10:24, edited 1 time in total.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Récupérer des données SQL

Post by Jmgr »

C'est un bug, en fait le problème c'est que les données ne sont pas interprétées comme une chaîne de caractères mais comme des données brutes.
Une solution de contournement, exécuter ce bout de code au début du script :

Code: Select all

QByteArray.prototype.toString = function()
{
   ts = new QTextStream(this, QIODevice.ReadOnly);
   return ts.readAll();
}
Avec ce code tu devrais pouvoir afficher le résultat de la requête.
"My software never has bugs. It just develops random features."
Aangrod
Posts: 35
Joined: 30 Jun 2013, 10:02

Re: Récupérer des données SQL

Post by Aangrod »

Mais non, ce n'est pas un bug. Ton logiciel a simplement développé une nouvelle caractéristique aléatoire :)

Et merci pour ta réponse rapide. Je viens d'essayer ta solution de contournement mais cela ne fonctionne toujours pas. Je mets le bout de code qui vient de me servir de test, au cas où je n'aurais pas compris ce qu'il fallait faire :

Code: Select all

QByteArray.prototype.toString = function()
{
   ts = new QTextStream(this, QIODevice.ReadOnly);
   return ts.readAll();
}
var SQL = new Sql(Sql.MySQL);
SQL.connect({
   hostName : "127.0.0.1",
   pot : "8888",
   databaseName : "mysql",
   userName : "root",
});
SQL.prepare("INSERT INTO bdd.user (id, data) VALUES(:id, :data)", {
   id: 1,
   data: "data"
});
SQL.execute();
SQL.execute("SELECT data FROM bdd.user WHERE id = 1");
var result = SQL.fetchResult();
SQL.disconnect();
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: Récupérer des données SQL

Post by Jmgr »

Je pense que c'est port : "8888" plutôt que pot : "8888".
Ensuite j'ai l'impression que ça fonctionne mieux avec les index pour récupérer les résultats, je n'ai pas le temps de vérifier mais il me semble que c'est une limitation du pilote MySQL.
Du coup, fait plutôt ça :

Code: Select all

var result = SQL.fetchResult(Sql.IndexNumber);
Et ensuite tu peut récupérer le résultat avec :

Code: Select all

result[0]
Comme tu veux le résultat de la première colonne.
"My software never has bugs. It just develops random features."
Aangrod
Posts: 35
Joined: 30 Jun 2013, 10:02

Re: Récupérer des données SQL

Post by Aangrod »

Merci beaucoup, en précisant le type d'indexation Sql.IndexNumber, la fonction fetchResult me renvoie désormais correctement le résultat de la requête SQL :wink:
Je précise que cela fonctionne même sans le morceau de code que tu m'avais fourni initialement.

Pour le port, c'est bien le port 8888 chez moi. Encore merci, je ne m'attendais pas à ce que mon problème soit résolu si rapidement.
User avatar
Jmgr
Admin
Posts: 1649
Joined: 07 Dec 2005, 15:45
Contact:

Re: [Résolu] Récupérer des données SQL

Post by Jmgr »

Pour le port, c'est bien le port 8888 chez moi. Encore merci, je ne m'attendais pas à ce que mon problème soit résolu si rapidement.
Non je voulais dire que tu as écrit "pot" au lieu de "port" dans le code que tu m'as donné. Si le port n'est pas précisé alors c'est le port par défaut qui est utilisé, il me semble que c'est 8888 pour MySQL, c'est pour ça que ça marche quand même.
"My software never has bugs. It just develops random features."
Aangrod
Posts: 35
Joined: 30 Jun 2013, 10:02

Re: [Résolu] Récupérer des données SQL

Post by Aangrod »

Ahah, je n'avais même pas remarqué. Bien vu.
Post Reply