2012-10-04 123 views
3

我是一個帶有POCO庫的新手。我需要從SQL Server中讀取DateTime字段(使用ODBC Native Client連接)。閱讀字符串或數字我沒有問題,但日期或時間戳給我一個困難的時間...我不確定是否應該使用Poco :: Timestamp來完成此操作。顯然不是。如何使用Poco C++庫從數據庫中讀取「日期」

#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行中得到以下錯誤(即與啓動一個「選擇< <「選擇名稱...):

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

太謝謝你了...

回答

2

好吧,好像現在我無法從數據庫中讀取日期或時間,我發現在波蘇論壇此評論:

對日期,時間和日期時間的支持在SVN中繼中,並且將在1.5中引入 。發佈。

此鏈接包括獲得提取類的最新版本:http://poco.svn.sourceforge.net/viewvc/poco/poco/trunk/Data/ODBC/src/Extractor.cpp?revision=1904&view=markup

在這個類中,我可以看到兩個新類波科::數據引用:日期和波科::數據::時間。

你可以在這裏閱讀原帖:http://pocoproject.org/forum/viewtopic.php?f=12&t=5492&p=9272&hilit=data+datetime#p9272

我將獲得最新的版本和嘗試。

謝謝

相關問題