Bonjour à tous, j'ai affaire à un problème tout bête que je n'arrive pas à résoudre. En C++, sur Qt j'initialise ma DB via : QSqlQuery test("CREATE TABLE test (ID integer PRIMARY KEY AUTOINCREMENT, userID VARCHAR(64), Amount VARCHAR(16), message VARCHAR(40));",m_db); test.exec();
puis je décide d'insérer des éléments :
QSqlQuery tx(m_db); tx.prepare("INSERT INTO test (userID, Amount, message) VALUES (?,?,?);");
Enfin, je décide de faire une recherche : QSqlQuery getUser("SELECT message FROM test WHERE `userID` = \""+QByteArray::fromHex(userId.toUtf8())+"\";",m_db); getUser.exec();
Mais il me retourne absolument rien alors que le userId est le même et qu'il est dans la db en caractères ANSI. Du coup je fais ma requête en caractères ansi : QByteArray::fromHex(userId.toUtf8()).
pourquoi ne pas passer par une requête préparée, comme pour l'insertion ? Je suspecte sinon que ce sont les guillemets entourant la valeur qui ne sont pas bon, tu insères des guillemets doubles (") alors qu'en principe (sauf erreur de ma part) il faut utiliser des simples (') (avec une requête préparée pas besoin de se poser la question)
Bonjour tout fonctionne. En effet, une requête prepare est plus utile dans mon cas ! Je vous re-merci beaucoup pour vos conseils !
Cordialement.
Base de donnée SQLite
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
git is great because Linus did it, mercurial is better because he didn't.