이진 데이터를 저장하기 위해 MySQL C ++ 커넥터를 어떻게 사용합니까?
-
21-08-2019 - |
문제
이진 데이터 블록이 다음과 같이 정의되어 있습니다.
void* 주소, size_t binarysize;
MySQL C ++ 커넥터를 사용하여 MySQL 데이터베이스에 저장하고 싶습니다.
함수 setBlob ()는 Istream을 취합니다.
질문:
RAW void* 주소에서 Size_T BinarySize에서 Istream 객체 또는 Istringstream으로 어떻게 변환 할 수 있습니까? 데이터를 "복사"하지 않고이 작업을 수행 할 수 있습니까? 즉, Istream에게 포인터와 크기를 지적 할 수 있도록 포인터를 말합니다.
해결책
당신은 다음과 같이 subclass streambuf 예를 들어야합니다.
class DataBuf : public streambuf
{
public:
DataBuf(char * d, size_t s) {
setg(d, d, d + s);
}
};
그런 다음 Databuf를 버퍼로 사용하는 IsTream 객체를 인스턴트하는데, 이는 이진 데이터 블록을 사용합니다. 이진 크기가 바이트 (char)의 이진 데이터의 크기를 지정한다고 가정하면 다음과 같이 할 수 있습니다.
DataBuf buffer((char*)address, binarySize);
istream stream(&buffer);
이제 SetBlob ()로 전달할 수있는 Istream 객체.
안부, 엘로 히르
제휴하지 않습니다 StackOverflow