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