2

DATETIMEフィールドを含むSQLテーブルがあります。私はC++のテーブルを使用しています。行を埋めるとき、日時を送信する必要があります。これを取得する最も簡単な方法は何ですか?

ubuntuを使用し、Qtでも動作するようにする必要があるため、boost::などの外部ライブラリを追加しない方がよいでしょう。

4

1 に答える 1

1

かつて同じような状況だったので、自分でDateTimeクラスを書きました。

ペーストビンの場合:

DateTime.h

DateTime.cpp


を使用している場合、このライブラリはJavaMySQL Connector/C++からエミュレートしようとしていると思います。JavaのパッケージJDBCのクラスは、C++の名前空間で定義されています。java.sqlsql

JDBCにはjava.sql.Timestampクラスがあるため、C++ライブラリにはsql::Timestampクラスが必要です。

ただし、MySQL 5.6のドキュメントには、 MySQL Connector / C ++に対して、およびタイプをC++ライブラリに追加するための機能要求があることが示されています。そのため、まだ利用できない可能性があります。DateTimeTimestampJDBC

今のところ、この質問への回答は、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プログラムでこれらを操作したい場合。これらのオブジェクトを使用して、アタッチしたクラスを使用してstd::stringオブジェクトを作成するのは簡単です。DateTimepastebin


に深く関わっていない場合はMySQL Connector/C++、に切り替えることを検討してMySQL++ください。このライブラリには間違いなくDateTimeタイプがあります。

于 2012-10-25T23:51:45.223 に答える