で動的SQLという名前のテーブルを作成します。次のコードは、POCOに「テスト」という名前のテーブルを作成し、POCO
#include "Poco/Data/Session.h"
#include "Poco/Data/SQLite/Connector.h"
#include <string>
using namespace Poco::Data::Keywords;
using Poco::Data::Session;
int main(int argc, char** argv)
{
Poco::Data::SQLite::Connector::registerConnector();
Session session("SQLite", "test.db");
session << "CREATE TABLE test (id INTEGER)", now;
return 0;
}
私は与えられた引数に基づいて命名テーブルを作成する機能を書きたいです。私は使用すると思っただろう
int main(int argc, char** argv)
{
Poco::Data::SQLite::Connector::registerConnector();
Session session("SQLite", "test.db");
std::string name = "test";
session << "CREATE TABLE ? (id INTEGER)", bind(name), now;
return 0;
}
ワイルドカード文字を使用して、指定された名前に置き換えます。私はそれを理解するので、私はbind
(与えられた値をコピーする)を必要とすべきではなく、now
で終わっているので、use
で十分であるはずです。
私が使用するキーワード(use
、bind
、useRef
)にかかわらず、プログラムは「SQLエラーまたはデータベースがありません」というエラーをスローします。
また、Statement
を作成してみましたが、テーブルを作成しても変更はありません。
何か間違っていますか?この呼び出しではワイルドカード置換は許可されていませんか?手動でコールを変更する必要はありますか?
私の#includes
から推測できるとおり、私はSQLiteを使用しています。