2010-02-24 45 views
1

如何获取结果集中BLOB字段中的数据大小?(使用C++和MySQL连接器C++)MySQL,C++:需要Blob大小来读取blob数据

为了从结果集中读取数据,我先为它分配内存。为了分配内存,我需要知道结果集中blob数据的大小。

搜索网页和StackOverflow,我发现了两种方法:OCTECT和BLOB流。

查找BLOB大小的一种方法是使用OCTECT()函数,该函数需要一个新的查询并生成一个新的结果集。我宁愿不使用这种方法。

另一种方法是使用blob流并查找到底,并获取文件位置。但是,我不知道该流是否可以重新开始以便读取数据。此方法需要额外读取整个流。

MySQL连接C++ 1.0.5ResultSetResultSetMetaData接口不用于在字段(列)获取的数据的尺寸的方法。

是否有只获得结果集和字段名称的BLOB字段中获取数据大小的过程?我正在使用MySQL连接器C++ 1.0.5,C++,Visual Studio 2008,Windows Vista/XP和“服务器版本:5.1.41-社区MySQL社区服务器(GPL)”。

回答

3

你可以做一个选择,如:

select LENGTH(content),content where id=123; 

,其中内容是BLOB字段。

问候。 请参阅:LENGTH(str)

+0

LENGTH()字段的结果集中的字段名称是什么? –

+0

应该可以通过索引访问结果(这里是1)。 在java中,我会调用'rs.setInt(1)'。 – elou

+1

length()的字段名称写为:'length(content)'。为了得到一个明智的名字,你必须做'contentLength'或类似的'length(content)'。 –