java 如何保存、读取数据库字段为blob类型的值

问题描述

java 如何保存、读取数据库字段为blob类型的值

java 如何保存、读取javaBean中定义String类型,oracle数据库字段为blob类型的值

这是我的业务逻辑代码
try {
String encoding = "GBK";
File file = new File("E:workspaceNeuSoft omcat7.0.40logslocalhost.2015-12-07.log");
if (file.isFile() && file.exists()) { // 判断文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);// 考虑到编码格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
while ((lineTxt = bufferedReader.readLine()) != null) {
// System.out.println(lineTxt);
interfaceLog.setFwqIp(ip);
interfaceLog.setJkLog(lineTxt);
interfaceLogService.createInterfaceLog(interfaceLog);
}
read.close();
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("读取文件内容出错");
e.printStackTrace();
}

这个是mybatis中代码

SELECT seq_neu_interfacelog_id.NEXTVAL FROM DUAL

<![CDATA[
INSERT INTO neu_interfacelog DS
(DS.ROW_ID,
DS.CREATE_BY,
DS.CREATE_DATE,
DS.REMARK,
DS.FWQ_IP,
DS.INTERFACELOG
)
VALUES
(#{rowId},
#{createBy},
SYSDATE,
#{remark},
#{fwqIp},
#{jkLog})

    ]]>
</insert>

现在控制台报异常
015-12-08 15:00:00,620 INFO  org.quartz.plugins.history.LoggingTriggerHistoryPlugin.triggerComplete:432 - Trigger neuSoftWorkPlatform_TRIGGER_GROUP.interfaceLogExpireBean completed firing job neuSoftWorkPlatform_JOB_GROUP.interfaceLogExpire at  15:00:00 12/08/2015 with resulting trigger instruction code: DO NOTHING

org.springframework.jdbc.UncategorizedSQLException:

Error updating database. Cause: java.sql.SQLException: ORA-01465: 无效的十六进制数字

The error may exist in file [E:workspaceNeuSoft
euSoftWorkPlatform
euSoftWorkPlatform-biz argetclassesmybatismappersinterfaceLogInterfaceLogMapper.xml]

The error may involve com.neusoft.interfaceLog.dao.InterfaceLogDAO.save-Inline

The error occurred while setting parameters

SQL: INSERT INTO neu_interfacelog DS (DS.ROW_ID, DS.CREATE_BY, DS.CREATE_DATE, DS.REMARK, DS.FWQ_IP, DS.INTERFACELOG ) VALUES (?, ?, SYSDATE, ?, ?, ?)

Cause: java.sql.SQLException: ORA-01465: 无效的十六进制数字

; uncategorized SQLException for SQL []; SQL state [72000]; error code [1465]; ORA-01465: 无效的十六进制数字
; nested exception is java.sql.SQLException: ORA-01465: 无效的十六进制数字

at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365)
at com.sun.proxy.$Proxy27.insert(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:237)
at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:79)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)
at com.sun.proxy.$Proxy86.save(Unknown Source)
at com.neusoft.interfaceLog.service.impl.InterfaceLogServiceImpl.createInterfaceLog(InterfaceLogServiceImpl.java:60)
at com.haier.openplatform.showcase.quartz.InterfaceLogExpireJob.execute(InterfaceLogExpireJob.java:52)
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)

Caused by: java.sql.SQLException: ORA-01465: 无效的十六进制数字

at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)
at com.haier.openplatform.jdbc.HOPPraparedStatement$3.run(HOPPraparedStatement.java:183)
at com.haier.openplatform.jdbc.HOPPraparedStatement$3.run(HOPPraparedStatement.java:180)
at com.haier.openplatform.jdbc.HOPPraparedStatement.doProfile(HOPPraparedStatement.java:382)
at com.haier.openplatform.jdbc.HOPPraparedStatement.execute(HOPPraparedStatement.java:180)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.update(PreparedStatementHandler.java:41)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.update(RoutingStatementHandler.java:66)
at org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:45)
at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:108)
at org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:75)
at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:145)
at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:355)
... 9 more

解决方案

用hibernate 读取BLOB字段保存到数据库中
java读取oracle数据库中blob字段
JAVA读取Oracle数据库BLOB字段

时间: 2024-10-31 09:39:39

java 如何保存、读取数据库字段为blob类型的值的相关文章

mysql数据库如何将blob类型转化为varchar类型

问题描述 mysql数据库如何将blob类型转化为varchar类型 我使用的数据库中有一个字段将中文以blob类型,现在要用sql命令取出,我该怎么做? 解决方案 你sql取出的那个字段是二进制文件,需要后台解析成相应的内容 解决方案二: alter table table_name change field_name field_name VARCHAR(1000); 解决方案三: http://www.linuxidc.com/Linux/2013-06/86198.htm 解决方案四:

java服务层-服务层对数据库字段的校验问题,大神帮忙

问题描述 服务层对数据库字段的校验问题,大神帮忙 对于三条银行卡数据,例如建行,中行,工商,当我点击添加的时候如果数据库里有了上述数据的时候则不能加进行添加,则提示该银行卡已存在.如果没有则可以添加成功.这个校验怎么做的.在服务层里面怎么加上这段代码,有点蒙. 解决方案 这个要看你的表结构了.直接从数据库里查询是否有这条数据存在,有则不加.可以通过银行卡的类型,如建行1,工行2,中行3.再加上银行账号进行查询.sql语句的话就是select *from 表名 where type = 1 and

asp读取数据库字段

今天冒出来一个想法,在仅知道数据库名的情况下,用asp得到数据库中的所有表名.所有表的字段名.以及所有字段中的内容.经过一段时间查询资料和修改,终于做出来了,现在与大家分享.< %'功能:显示数据库中表名.字段名.字段内容 '原创:wangsdong '来源:www.111cn.net '原创文章,转载请保留此信息,谢谢 % > 只要改变一下数据库名,然后运行一下这个程序,就可以看到结果了. set rs=server.CreateObject("adodb.recordset&qu

Java mongodb保存/读取应用实例详解

下面的例子是把User对象插入到Mongodb中,并读出来  代码如下 复制代码 User.java: package com.mongo;   public class User {  String name;  int age;  Oid _id;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getAge(

在ASP中读取ORACLE中的BLOB类型的字段的值,不用Oracle Object for Obj

这是第一天在CSDN上发表文档,目的是困惑了两天的问题终于解决了,说出来,与大家共享一下,希望对遇到这样问题的朋友有所帮助. 是这样的,我们在PB中用F1,把报表以EXCEL格式存贮在ORACLE数据库中,我们刚开始用一个LONG RAW型字段来存放EXCEL大对象,然后,存进去了几个小的EXCEL文件,做了测试程序,可以把LONG RAW字段的EXCEL大对象读出来,然后,在ASP中以EXCEL的格式把EXCEL文件显示出来. 因为测试程序成功.所以我们开始往表中存EXCEL文件,然后又用测试

java-Oracle读取二进制BLOB类型数据出现乱码

问题描述 Oracle读取二进制BLOB类型数据出现乱码 JAVA中,读取Oracle中二进制BLOB类型数据,出现乱码.. 如果BLOB是文本类型存储的就不会存在乱码 BLOB blob = (oracle.sql.BLOB)rs.getBlob(""ys1""); try{ FileOutputStream outStream = new FileOutputStream(""c:/oracleback1.txt"");

二进制-mysql 数据库中 blob 类型存储数字 无法正常插入更新

问题描述 mysql 数据库中 blob 类型存储数字 无法正常插入更新 事情是这样的,在Mysql数据库中有个字段是blob类型的,里面存放的是 8字节无符号整数, 类似于 33454690,45672389,这样一类数值,我使用select 语句select conv(hex(bc.DataTimeStamp) ,16,10) as DataTimestamp 是可以正常显示的,现在我想把 33454690 这个数字 查找出来,加1,变为 33454691,再存放回去. 使用语句 inser

java编写图片导入数据库的代码

问题描述 java编写图片导入数据库的代码.那位大虾能帮帮忙啊! 解决方案 解决方案二:数据库字段使用BLOB(二进制)Hibernate操作图片的例子网上很多,你搜搜.

php实现上传图片保存到数据库的方法

 这篇文章主要介绍了php实现上传图片保存到数据库的方法,可通过将图片保存在数据库实现多台服务器共享文件的功能,非常具有实用价值,需要的朋友可以参考下     php实现上传图片保存到数据库的方法.分享给大家供大家参考.具体分析如下: php 上传图片,一般都使用move_uploaded_file方法保存在服务器上.但如果一个网站有多台服务器,就需要把图片发布到所有的服务器上才能正常使用(使用图片服务器的除外) 如果把图片数据保存到数据库中,多台服务器间可以实现文件共享,节省空间. 首先图片文