MySQL、C++:需要 Blob 大小才能读取 Blob 数据
如何获取结果集中 BLOB 字段中数据的大小? (使用 C++ 和 MySQL Connector C++)
为了从结果集中读取数据,我先为它分配了内存。为了分配内存,我需要知道结果集中 blob 数据的大小。
在网上和StackOverflow上搜索,我发现了两种方法:OCTECT和BLOB流。
查找 BLOB 大小的一种方法是使用 OCTECT()
函数,该函数需要新的查询并生成新的结果集。我宁愿不使用这种方法。
另一种方法是使用 blob 流并查找到末尾,并获取文件位置。但是,我不知道流是否可以倒回开头以读取数据。此方法需要额外读取整个流。
MySQL Connector C++ 1.0.5的ResultSet
和ResultSetMetaData
接口没有提供获取字段(列)数据大小的方法)。
是否有一个过程可以仅在给定结果集和字段名称的情况下获取 BLOB 字段中数据的大小?
我正在使用 MySQL Connector C++ 1.0.5、C++、Visual Studio 2008、Windows Vista / XP 和“服务器版本:5.1.41-community MySQL Community Server (GPL)”。
How do I get the size of data in a BLOB field in the Result Set? (Using C++ and MySQL Connector C++)
In order to read the data from the result set, I have allocate memory for it first. In order to allocate memory, I need to know the size of the blob data in the result set.
Searching the web and StackOverflow, I have found two methods: OCTECT
and BLOB stream.
One method to find the BLOB size is to use OCTECT()
function, which requires a new query and produces a new result set. I would rather not use this method.
Another method is to use the blob stream and seek to the end, and get the file position. However, I don't know if the stream can be rewound to the beginning in order to read the data. This method requires an additional read of the entire stream.
The ResultSet
and ResultSetMetaData
interfaces of MySQL Connector C++ 1.0.5 do not provide a method for obtaining the size of the data in a field (column).
Is there a process for obtaining the size of the data in a BLOB field given only the result set and a field name?
I am using MySQL Connector C++ 1.0.5, C++, Visual Studio 2008, Windows Vista / XP and "Server version: 5.1.41-community MySQL Community Server (GPL)".
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以执行如下选择:
其中内容是 BLOB 字段。
问候。
请参阅: 长度(str)
You could do a select like:
where content is the BLOB field.
Regards.
see: LENGTH(str)