2016-05-24 7 views
2

Ich benutze Poco version 1.5.2. Ich habe das folgende Problem mit dem Beispiel, unter Verwendung der Poco::Data Sachen.Poco :: Datenbindung an ein std :: Array von Argumenten

Statement select(mySession) // connect to SqLite session object. 
    std::vector<int> args; 
    args.push_back(1); 
    args.push_back(2); 

Diese Abfrage funktioniert nicht und wirft unten Text auf die Standardausgabe

select << "SELECT X,Y,Z FROM my_table WHERE a=? AND b=?", bind(args), into(myEntityContainer),now; 

"Invalid Zugang:. Nicht leeren Wert umwandeln kann"

Allerdings funktioniert dieses feine

select << "SELECT X,Y,Z FROM my_table WHERE a=? AND b=?", bind(arg[0]), bind(arg[1]) into(myEntityContainer),now; 

dies in späteren Versionen korrigiert wird? Wie kann ich eine Problemumgehung in version 1.5.2?

Antwort

0

Wird dies in späteren Versionen korrigiert?

Nein, weil zur Zeit zu implementieren ist nicht trivial bind() ihr Argument erwartet zu einer einzigen Spalte (dh „vertikal“ gebunden zu sein -., Wenn Sie einen Vektor binden, Werte dann aus dem Vektor in eine eingefügt wird einzelne Spalte).

Wie kann ich eine Umgehung in Version 1.5.2 vornehmen?

Sie haben bereits eine Problemumgehung angegeben, jedoch keine generische; eine generische Lösung würde durch den Container iterieren und "manuell" jedes Mitglied als eine Bindung an die Anweisung hinzufügen, siehe here für ein Beispiel (beachte, dass use() und bind() im Wesentlichen dasselbe tun, semantischer Unterschied zwischen den beiden erläuterten here).

Verwandte Themen