1

我正在尝试通过 Worklight SQL 适配器检索在 Derby DB 中存储为 CLOB 的图像。我想做与此处所写内容类似的事情: https ://www.ibm.com/developerworks/community/blogs/dhuyvett/entry/jsonstore_revisited_in_worklight_v6_part_1_the_adapter?lang=en 除了参考的文章作者正在使用 DB2。有谁知道我如何在德比做到这一点?目前,当我去检索执行 SQL 选择的图像时,返回的字符串是

“图像”:“org.apache.derby.impl.jdbc.EmbedClob@2d236”

我也会考虑使用 mysql 作为替代方案。感谢您的任何建议。

捷通

4

2 回答 2

1

感谢您提供的所有重要信息。我最终使用 MySQL 完成了这项工作。Base64 编码的图像存储在 BLOB 列中。要检索数据,我的适配器 SELECT 语句如下所示:

selectStatement = WL.Server.createSQLStatement("select  *, convert(IMAGE USING utf8) as CONVERTEDIMAGE from report");

然后在我的客户端代码中,我循环遍历结果集以获取我通过信息窗口中的谷歌地图标记显示的图像

incidentRec.image = result.invocationResult.resultSet[i].CONVERTEDIMAGE;
 $marker.click(function() {
        $('#map_canvas').gmap('openInfoWindow', {'content': '<p> ' + incidentArray[this.id].description + '</br>' +     '<image + src="data:image/jpg;base64,'+  incidentArray[this.id].image + '"/>' + '</p>'}, this);
    });

如果时间允许,我可以尝试德比的方法。再次感谢!

于 2013-11-11T02:13:40.863 回答
1

org.apache.derby.impl.jdbc.EmbedClob 是 java.sql.Clob,所以如果你在 var 中有 CLOB,你应该能够通过以下方式获取数据:

var dataAsString = theClob.getSubString(1, theClob.length());  // Assumes all CLOBS are < 2G
于 2013-11-10T16:02:56.367 回答