繁体   English   中英

如何使用Poco C ++库从数据库中读取“日期”

[英]How to read “dates” from database using Poco C++ library

我是POCO图书馆的新手。 我需要从SQL Server读取DateTime字段(使用ODBC Native Client连接)。 我没有阅读字符串或数字的问题,但日期或时间戳给我带来了困难时间...我不确定我是否应该使用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 <<开头的那个选择Name ...):

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

非常感谢...

好吧,好像目前我无法从数据库中读取日期或时间。 我在Poco论坛上发现了这条评论:

对日期,时间和日期时间的支持在SVN中继,将在1.5中引入。 发布。

包含此链接是为了获取Extractor类的最新版本: http//poco.svn.sourceforge.net/viewvc/poco/poco/trunk/Data/ODBC/src/Extractor.cpp? revision=1904&view= markup

在这个类中,我可以看到对两个新类Poco :: Data:Date和Poco :: Data :: Time的引用。

你可以在这里阅读原帖: http//pocoproject.org/forum/viewtopic.php?f = 12&t = 5492&p = 9272&hilit = data + datetime#p9272

我将获得最新版本并尝试。

谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM