2

我有一个带有 DATETIME 字段的 SQL 表。我正在使用 C++ 中的表。当我填写该行时,我需要提交一个日期时间。得到这个的最简单的方法是什么?

使用 ubuntu 并且需要它也可以与 Qt 一起使用,所以最好不要添加像 boost:: 这样的外部库。

4

1 回答 1

1

我曾经遇到过类似的情况,所以我写了自己的DateTime课。

在 pastebin 上:

日期时间.h

日期时间.cpp


如果您正在使用MySQL Connector/C++,那么我相信这个库会尝试JDBC从 Java 中进行模拟。java.sqlJava 包中的类sql在 C++ 的命名空间中定义。

JDBC 有一个java.sql.Timestamp类,所以 C++ 库应该有一个sql::Timestamp类。

但是,MySQL 5.6 文档显示MySQL 连接器/C++ 有功能请求,要求他们将Date,TimeTimestamp类型添加JDBC到 C++ 库中。所以它们可能还不可用。

目前,这个问题的答案建议您应该使用它std::string来获取和设置Timestamp字段。

插入:

std::string ts_field = "2012/10/26 07:15:00";

pstmt = con->prepareStatement("INSERT INTO date_table(date_field) VALUES (?)");

pstmt->setString(1, ts_field);
pstmt->execute();

delete pstmt;

选择:

pstmt = con->prepareStatement("SELECT date_field FROM date_table");
res = pstmt->executeQuery();

while (res->next()) 
{
    std::string ts_field = res->getString("date_field");
    cout << ts_field << endl;
}

delete res;
delete pstmt;

如果你想Timestamp在你的程序中操作这些 s。使用这些对象使用我附加的类std::string创建对象将是微不足道的。DateTimepastebin


如果你不是太深入MySQL Connector/C++,你可以考虑切换到MySQL++。这个库肯定有一个DateTime类型。

于 2012-10-25T23:51:45.223 回答