Pocoライブラリを持つMySQLテーブルに行が存在するかどうかを確認しようとしています。働くこれを行うのPocoでEXISTSの値を選択
一つの方法は、次のとおりです。その後、
session << "SELECT COUNT(*) FROM %s WHERE Serial=?",
into(n), // int
tableName, // string
use(serial), now;
とn==0
かどうかを確認します。
ただし、これを行うための明確な(そして速い)方法は
session << "SELECT EXISTS(SELECT * FROM %s WHERE Serial = ?)",
into(n),
tableName,
use(serial), now;
だろうn
の値はその後、0または1このどちらかだろう、しかし、(!pBinder.isNull()
)実行時にアサーション例外がスローされます。これはn
がint
かbool
(EXISTS
がBOOLEAN
を返すので、これが適切です)に関係なく発生します。
私のバインディングに問題があった場合(このバインディングは以前に行った他のクエリと同じですが、エラーが暗示しているように)、このテストではすべてのバインディングを一時的に削除してRecordSet
としました。それを画面に印刷します。
session << "SELECT EXISTS(SELECT * FROM TestTable WHERE Serial = 'XXX')", now;
RecordSet r(exists);
cout << r;
クエリとRecordSet
の建設がうまく動作するように見えるが、私は、コンソールに印刷しようとすると、Poco::BadCastException
がスローされます。
これはPocoで行うことができますか、それともSELECT COUNT(*)
の方法をそのまま使用する必要がありますか?
ヒントありがとうございますが、どちらも機能していません。 – Wasabi