J'ai lu la documentation, et j'ai regardé les exemples, mais je n'arrive toujours pas à comprendre comment assigner une table à une variable globale en C++. Je pourrais être un peu gâté. Je viens de python et assigner une table à une variable globale est vraiment simple en utilisant mysqldb.mysql ++ variable de table globale
Une table peut-elle être affectée à une variable globale accessible en dehors de la classe mysqlpp?
À titre d'exemple, lorsque le code suivant est compilé, je reçois l'erreur: erreur: « sched_recs » n'a pas été déclarée dans ce champ
#include <mysql++.h>
#include <string>
#include <time.h>
using namespace std;
using namespace mysqlpp;
int SSE (const char* timeStr)
{
time_t sse;
struct tm tm;
strptime(timeStr, "%Y-%m-%d %H:%M:%S", &tm);
sse = mktime(&tm);
return (sse);
}
int main()
{
string table = "sched_recs";
time_t now, tt;
now = time(NULL);
try
{
// Connect to the sample database.
mysqlpp::Connection conn(false);
// databasename, host, username, password
if (conn.connect("dbname", "dbhost", "dbusername", "dbpasswd")) {
// Retrieve a subset of the sample stock table set up by resetdb
// and display it.
//stmt = "select datetime from %s", table
mysqlpp::Query query = conn.query("select * from sched_recs");
mysqlpp::StoreQueryResult sched_recs = query.store();
//if (mysqlpp::StoreQueryResult tableData = query.store()) {
////cout << "We have:" << endl;
//}
}
}
catch (Exception& e)
{
cerr << "Exception: " << e.what() << endl;
}
for (size_t i = 0; i < sched_recs.num_rows(); ++i) {
if (SSE(sched_recs[i][1]) - 60 * 3 < now && SSE(sched_recs[i][2]) > now)
{
cout << '\t' << sched_recs[i][1] << endl;
//system("at -f test.py '18:30' today");
}
}
}
Si je me déplace à la place la boucle de retour dans la classe, alors tout fonctionne bien, mais c'est limitant. Est-ce la seule façon de le faire? Tous les exemples semblent le faire croire.
Quelle documentation (un lien serait bien). –
Il semble que cela soit fait via SSQLS, mais en regardant le chapitre 5 de la [documentation] (http://www.tangentsoft.net/mysql++/doc/html/userman/ssqls.html). Dois-je vraiment définir un membre de données pour chaque colonne SQL de la table ou seulement celles que je veux demander? Les docs donnent l'impression que je dois en définir un pour chaque colonne de la table: "qui a un membre de données pour chaque colonne SQL, en utilisant les mêmes noms". – nomadicME
Veuillez noter que vous avez déclaré 'mysqlpp :: StoreQueryResult sched_recs' dans le bloc' try {} 'et que lorsque le bloc se termine, la variable sort de sa portée et ne peut pas être utilisée en dehors du bloc try. Déplacez la boucle 'for' dans le bloc' try {} 'ou déplacez la déclaration de variable avant le bloc' try {} '. – Yaniro