The*_*ght 5 java oracle jdbc long-integer
我面临一个奇怪的问题.我有一张桌子file_data.它有一个名为的列filedata,数据类型是long raw.在此列中,excel文件的十六进制表示形式存储为D01A01.....现在我有一个名为'PROC_STORE_DATA'的程序.我从我的java类调用此过程并尝试在该表列中插入excel电子表格内容.
在我的Java类中,我得到的文件内容如下:
byte[] bytes = fileData.getBytes();
StringBuffer hexSt = new StringBuffer();
for(byte b : bytes){
hextSt.append(Integer.toHexString(b & 0xff));
}
Run Code Online (Sandbox Code Playgroud)
我有一个名为procData的散列图,其中我推送这个hexSt变量.
procData.put('fileData',hextSt.toString().toUpperCase());
Run Code Online (Sandbox Code Playgroud)
然后,我调用我的更新方法通过我的过程更新表:
myUpdateDao().update(PROC_STORE_DATA,procData);
Run Code Online (Sandbox Code Playgroud)
在mybatis.xml中,这是我在参数map中定义要更新的列的方法:
<parameterMap>
<parameter property="updatefileData" javatype="java.lang.String" jdbcType="LONGVARCHAR">
</parameterMap>
Run Code Online (Sandbox Code Playgroud)
但是在运行之后,我收到了这个错误:wrong number or types of arguments in the procedure call - PLS-00306 and ORA-06550.
我花了2天但我不明白问题出在哪里.问题可能出在javaType和jdbcType上,但我不知道我应该在这里为javaType和jdbcType提供数据类型的列LONG RAW.
在使用longvarbinary和byte[]ewramner的答案中提到后,我得到一个类强制java.lang.String转换异常:无法转换为[L java.lang.Byte
我认为你应该使用byte[]和LONGVARBINARY。
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |