如何将Clob数据转换为Binarystream?
我现在可以在2个步骤中找到它,1 - > CLOB到String 2 --->字符串到BinaryStream。
我正在调用一个SQL包,它有1个i / p和2个o / p,并将CLOB输出分配给某个变量XYZ,样本如下所示......
Clob XYZ=null;
CallableStatement CalSmt = null;
InputStream ABC = null;
try
{
CalSmt = conn.prepareCall("{call package(?,?,?)}");
CalSmt.registerOutParameter(1,OracleTypes.CLOB);
CalSmt.registerOutParameter(2,OracleTypes.INTEGER);
CalSmt.setString(3,"315141");
CalSmt.execute();
XYZ = CalSmt.getClob(1);
ABC= **XYZ.getBinaryStream();** <---- this is showing me a error as 'Method "getBinaryStream" not found'
}
这里XYZ持有CLOB数据,需要将其转换为二进制流并保存到ABC中以供进一步参考。请通过为此plz提供单一方法来帮助我。在此先感谢。
答案 0 :(得分:2)
是的,Clob
上没有getBinaryStream
方法,因为它没有意义。 clob是字符数据,而不是二进制数据。要求clob获取二进制流而不是向blob请求字符流没有意义。
转换为字符串的方法对我来说似乎是合理的,说实话,如果你真的需要这种转换。如果您可以避免它,那会更好 - 如果您要存储二进制数据,请在任何地方使用blob和InputStream
。如果您要存储字符数据,请在任何地方使用clob和Reader
。