4

私はPOCOライブラリの初心者です。SQL Server(ODBC Native Clientを使用して接続)からDateTimeフィールドを読み取る必要があります。文字列や数字を読むのに問題はありませんが、日付やタイムスタンプは私に困難な時間を与えています...これを達成するためにPoco::Timestampを使用する必要があるかどうかは本当にわかりません。どうやらそうではありません。

#include <vector>
#include <iostream>

#define POCO_STATIC

#include <Poco/DateTime.h>
#include <Poco/DateTimeFormat.h>
#include <Poco/DateTimeFormatter.h>
#include <Poco/SharedPtr.h>
#include <Poco/Tuple.h>
#include <Poco/Data/SessionFactory.h>
#include <Poco/Data/Session.h>
#include <Poco/Data/ODBC/Connector.h>

using namespace Poco::Data;

int main() {
    typedef Poco::Tuple<std::string, Poco::Timestamp> Event;
    typedef std::vector<Event> Events;

    Poco::Data::ODBC::Connector::registerConnector();
    Session session("ODBC", "DSN=TestSNAC");

    Events events;

    Statement select(session);
    select << "select Name, StartDate from Events order by Name", into(events), now;

    for (Events::const_iterator it = events.begin(); it != events.end(); it++) {
        std::string date(Poco::DateTimeFormatter::format(it->get<1>(), "%b %e, %Y"));

        std::cout << " Name: " << it->get<0>() 
                  << " Start: " << date << std::endl;
    }

    return 0;
}

27行目のコンパイル中に次のエラーが発生します(これは'select << "select Name ...で始まるエラーです):

error C2664: 'bool Poco::Data::AbstractExtractor::extract(size_t,Poco::Int8 &)' : cannot convert parameter 2 from 'Poco::Timestamp' to 'Poco::Int8 &'

どうもありがとう...

4

1 に答える 1

3

わかりました。現在、データベースから日付や時刻を読み取ることができないようです。私はPocoフォーラムでこのコメントを見つけました:

Date、Time、DateTimeのサポートはSVNトランクにあり、1.5で導入される予定です。リリース。

次のリンクは、Extractorクラスの最新リリースを取得するために含まれています:http://poco.svn.sourceforge.net/viewvc/poco/poco/trunk/Data/ODBC/src/Extractor.cpp ?revision = 1904&view = markup

このクラスでは、2つの新しいクラスPoco :: Data:DateとPoco :: Data::Timeへの参照を見ることができます。

ここで元の投稿を読むことができます:http: //pocoproject.org/forum/viewtopic.php? f = 12&t = 5492&p = 9272&hilit = data + datetime#p9272

最新のリリースを入手して試してみます。

ありがとうございました

于 2012-10-04T15:41:38.350 に答える