【问题标题】:MySQL, C++: Need Blob size to read blob dataMySQL,C++:需要 Blob 大小来读取 Blob 数据
【发布时间】:2010-02-25 23:18:29
【问题描述】:

如何获取结果集中 BLOB 字段中的数据大小? (使用 C++ 和 MySQL 连接器 C++)

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

在网上和 StackOverflow 上搜索,我找到了两种方法:OCTECT 和 BLOB 流。

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

另一种方法是使用blob流并寻找到最后,并获取文件位置。但是,我不知道是否可以将流倒回到开头以读取数据。此方法需要额外读取整个流。

MySQL Connector C++ 1.0.5ResultSetResultSetMetaData 接口没有提供获取字段(列)中数据大小的方法。

有没有只给定结果集和字段名就可以获取 BLOB 字段中数据大小的过程?

我正在使用 MySQL Connector C++ 1.0.5、C++、Visual Studio 2008、Windows Vista / XP 和“服务器版本:5.1.41-community MySQL Community Server (GPL)”。

【问题讨论】:

    标签: c++ mysql visual-studio-2008 blob


    【解决方案1】:

    你可以做这样的选择:

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

    其中内容是 BLOB 字段。

    问候。 见:LENGTH(str)

    【讨论】:

    • LENGTH() 字段在结果集中的字段名称是什么?
    • 应该可以通过索引访问结果(这里是1)。在 java 中,我将调用 'rs.setInt(1)'。
    • length() 的字段名称为:length(content)。要获得一个合理的名称,您必须使用 length(content) as contentLength 或类似名称。
    猜你喜欢
    • 2018-05-07
    • 2023-03-31
    • 2012-07-16
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多