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

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

这是我的业务逻辑代码
try {
String encoding = "GBK";
File file = new File("E:\workspaceNeuSoft\tomcat7.0.40\logs\localhost.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\neuSoftWorkPlatform\neuSoftWorkPlatform-biz\target\classes\mybatis\mappers\interfaceLog\InterfaceLogMapper.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
0

2个回答

java中如何接收一个 十六进制的数据 并保存到数据库中,数据库中字段类型longbolb,如何读取

0

我这里可以提供一个我刚刚使用过的方案,先把需要存储的图片转为base64编码的字符串,再将此字符串转化为byte[],然后就可以在数据库中用blob字段进行存储了。
比如我这里:
byte[] contextBytes = communityPO.getContentTxt().getBytes();
communityPO.setContentTxtBytes(contextBytes);
数据库中就直接存储这个contextBytes就可以了。
对应的mybatis文件中result中可以这样写:
result column="content_txt" typeHandler="org.apache.ibatis.type.BlobTypeHandler" property="contentTxtBytes"

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
通过JDBC向数据库中存储&读取Blob数据
大对象的存储需要对数据转换成2进制数据,通过流的输入输出操作对Blob数据进行存储和读取操作rn步骤:rn  存储操作:rnrnrnrnrn创建一个字节输入流,先将Blob对象读取到字节数组中byte[] b;创建一个Blob 实例Blob pic=conn.createBlob();创建一个字节输出流接收Blob对象的返回的输出流OutputStream os=pic.setBinaryStre
java读取大字段blob类型
java读取大字段,介绍java如何读取大字段blob,解决程序员头疼问题
java中Blob字段出库/获取Blob字段存储的数据
上一篇说了Blob字段的入库 n这次说一下Blob字段的出库,也就是读取Blob字段中存的数据,因为不知道Blob字段中存的数据(文件)时什么类型的,所以可以在存入数据库的时候,每一条数据对应的存上Blob中存入的文件的文件名(一定带上文件格式),下面的代码都是在这个条件下完成的,如果你的Blob字段不知道存的什么类型的文件,那么………… n首先要拿到你要获取的Blob所在的那条数据,就是一条查询语
读取blob类型图片数据 保存到本地
如何将blob类型数据的图片数据从数据库中读取出来,并保存到本地呢?nn代码如下:nn定义一个实体类:nnnpublic class IdeaImgOutVo {nn private byte[] photo;//图片n private String plNO;//手册编码n private String pictureName;//图片名字nn public byte[]...
java读取oracle数据库中blob字段
java读取oracle数据库中blob字段
读取数据库中BLOB类型数据文件
建议:看此博客前,看一下这个博客http://blog.csdn.net/qciwyy/article/details/54092327rn点击某个文件的名称时弹出文件内容rncontroller代码如下:rnrnrn/**n * 读取上传文件信息n */n @RequestMapping(value = "/gafRead")n public void loadByDeployment
按文件id下载数据库BLOB字段中的文件
按照id下载存放在oracle数据库的blob字段中的内容。
JDBC将base64保存在BLOB字段类型中
                 nnn//先查询出来(for update是重点),然后再插入插入照片n                String sqlzp=&quot;select zp from T_EXAM_PROCESS where id='&quot;+examProcess.getId()+&quot;' for update&quot;;n                if(!examProcess.getZp()...
Java更新数据库的大字段blob,包括oracle和db2
最近项目同事中,想更新db2的大字段内容,抽空写了点代码实现这一潜在需求点.rn1.db2可直接进行更新大字段rnrnpackage com.yyy.dailycode.enjoycoding.insertblob;nnimport java.io.BufferedOutputStream;nimport java.io.InputStream;nimport java.io.OutputStre
更新用blob字段存储照片的Java代码
package com.service;nnimport java.io.File;nimport java.io.FileInputStream;nimport java.io.FileNotFoundException;nimport java.io.FileOutputStream;nimport java.io.InputStream;nimport java.io.OutputStrea
MaBatis操作更新或读取BLOB字段方法
工作原因,需要对数据库中的Excel模板操作,字段为BLOB字段,以前没操作过,百度了一大堆,方法也是各不相同,现在写出来了,分享出来,供大家参考这个是读取数据库里的BLOB字段保存的Excel模板****************************************************************************************************首...
Mybatis解决数据库Blob类型存储与读取问题
目录nnnnn1.Blob介绍n2.自定义Blob类型处理器n3.编写查询语句nnnnnnnn1.Blob介绍nn首先,先简单介绍下数据库Blob字段,Blob(Binary Large Object)是指二进制大对象字段,顺带介绍下Clob类型,Clob(Character Large Object)是指大字符对象。其中Blob是为存储大的二进制数据而设计的,而Clob是为存储大的文本数据而设计...
jdbc 如何处理Blob类型字段的数据
jdbc处理大对象Blobnn 在贴代码之前先讲一下什么是LOB大对象数据n LOB 大对象 是用来存储大量的二进制和文本数据的一种数据类型(一个LOB字段可存储多达 4GB的数据)nn  LOB分类两种类型:nn(1)内部,n (2)外部n 内部LOB将数据是已字节流的形式存储再数据库的内部,因而LOB的许多操作都可以参与事务,也可以像处理普通数据一样对其进行备份和恢复操作。n 内部三种类型:n...
mysql数据库blob图片的存储和读取
1.首先对应于数据库boy表创建持久化类Boy (使用hibernate 逆向生成) nmysql表结构:表名:boy  nid : 主键 integernname: varchar(20)nimage: blobnnnpublic class Boy  implements java.io.Serializable {n    // Fields    nn     priv
使用JDBC写入blob数据到数据库以及读取数据
package com.yucheng.jdbc;rnrnimport java.io.FileInputStream;rnimport java.io.FileOutputStream;rnimport java.io.InputStream;rnimport java.io.OutputStream;rnimport java.sql.Blob;rnimport java.sql.Connec
java操纵sqlite数据库读写blob字段
rnnrnrnBLOB(Binary Large Object):可存储大型二进制对象,如图形、视频、声音等文件。rnJAVA对SQLite BLOB的操纵:rn存:直接把文件读取到Byte数组中,再把Byte数组直接插入到数据库。rn取:把记录读取到Byte数组中,再把Byte数组直接写入文件。rn没有用“流”的方式(SQLite JDBC没有实现相应接口)。rn rnrn存入处理步骤:rn  ...
利用VB存取数据库中BLOB数据
利用VB存取数据库中BLOB数据,此文档仅提供了一种方法,仅供需要者参考(文档来源于网络,供大家参考学习使用)
springboot 读取Blob 解析成文件
n/**n * 根据应聘者id下载对应的pdf简介n * @param requestn * @param responsen * @param idn * @returnn * @throws IOExceptionn */n @SuppressWarnings(&quot;unused&quot;)n @RequestMapping(value = &quot;/download&quot;, method = Req...
如何向数据库中存取BLOb字段
存: 创建一个和数据对应的实体pojo: 其中数据库blob字段对应的实体属性定义成byte[]类型 fileContant,然后得到上传的file后getBytes()给fileContant赋值,直接入库则OK.rn取:rn[code=&quot;java&quot;]rn@RequestMapping(value = &quot;/loadAttach&quot;, method = RequestMethod.GET)rn pu...
Mybatis读取Oracle数据库Blob字段,输出原文件
1、beannnpackage com.cntaiping.tpa.bean;nnimport java.sql.Blob;nnpublic class AttachmentBean {n private Integer id;n private String finename;n private Long contentSize;n private String file...
java对DB2数据库大字段(BLOB类型)的处理
db2大字段(BLOB类型)rn rnrn大字段对应java的数据类型 rnrnrnjava将Blob类型转换为String类型
使用Spring的jdbcTemplate读取数据库中BLOB字段并存储在本地并在页面显示
首先你已经搭建了Spring,我可以对数据库进行操作code:public Map&amp;lt;String, Object&amp;gt; getUser(String id) {n String sql=&quot;select * from tUser where id=&quot;+id;n Map&amp;lt;String, Object&amp;gt; map=jdbcTemplate.query(sql...
java 文件写入oracle数据库blob字段
public void file2blob() throws Exception {rnString filePath = "D://FILE//t.txt";rnoracle.sql.BLOB b = null;rnConnection con = null;rnStatement st = null;rntry {rnString uuid = UUID.randomUUID().toStri
读取oracle数据库的blob数据类型的文本值
public string getblobdata(string instanceid)        {            string rtn = &quot;&quot;;            string a = &quot;select rsjson from i_APPLICATION where objectid='4d24e809-739c-41e2-b5aa-aac645c7825a'&quot;;       ...
java向Oracle数据库中插入blob字段数据
java不能直接想插入其他普通类型数据一样插入blob字段数据,因为blob相当于一个大文件块,里面有游标,需要初始化blob游标才能插入数据。所以我们要先插入一个空的blob数据,以初始化游标,然后再往这个blob字段中写入数据,来实现插入blob数据的效果,代码如下:package controller;nnimport java.io.FileInputStream;nimport java...
图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片)
图片BASE64加密保存到数据库Blob类型中(放入数据库,并取出生成图片),完整的demo例子,可运行。
数据压缩及Sqlite的大对象字段BLOB数据的读写操作
目标:rn1. 对标量型数组(int、byte和double等)进行数据压缩;rn2. 用解压算法对压缩后的数据进行复原;rn3. 查看压缩前后磁盘空间和读写性能差异。rn工具:rnSystem.Data.Sqlite.dll (将压缩后的数据流存放在Sqlite的BLOB类型字段中)rnzlibnet.dll (完全开源和免费)网址:http://www.componentace.com/zli
分享_第二天_SQL_DB2数据库BLOB类型字段查看问题
DB2数据库BLOB类型字段查看问题nnnn最近在项目中,碰到BLOB字段的查看问题,在网上查了两天,终于让我找到了貌似可以解决问题的方法。(用貌似是因为还没有在生产环境试验过,只在测试环境做了尝试)nn问题描述: n有张表,其中一列定义为BLOB类型,用于存储大文本数据,比如电子文本合同等。在开发机上,自然可以利用DBVisualizer工具,查看到中文内容;nn可是在生产数据库服务器上,是无法...
Java读取数据库中blob字段并插入到另一个表中
可以从数据库中读取blob字段并插入到另一个表中,已经测试通过
查询BLOB(图片)并通过流方式写入页面
//通过oracle中获取BLOB字段并且将BLOB字段中的图片显示在页面中。(流)rn ResultSet rsset = null;rn PreparedStatement pstmt = null; rn Connection conn = null; rn try { rn Class.forName(&quot;oracle.jdbc.driver.OracleDriver&quot;); rn c...
Oracle数据库中向BLOB类型字段插入字符串并把插入的BLOB数据转换成字符串显示...
首先先在数据库中创建一张表rncreate table TB_TEST(  ID  NUMBER,  BLB BLOB)rn rn其次向表中插入一条空数据rninsert into tb_test (id,blb) values (1,empty_blob())rn rn最后更改BLOB字段的值rn declare  directions BLOB;rn  amount          BINA...
java读取oracle中的blob类型数据
此处用的DBUtils开源工具类,nnMap mapBlob=DBUtils.get(“自己的查询sql语句(select blol from dual)”, “此处为sql传入的参数”);nn上述读取返回一个map,map中放的就是读取的blob值,可以查看此值为一个地址,想要知道其是什么类型的可以利用java反射机制获取,如下;nnnn上面标红部分为值的类型,此处打印出来就是byte;nn由此...
SSM后台处理oracle数据库的BLOB字段数据
背景:公司项目需要在BLOB里存储大文本JSON格式的字符串,主要是echart的配置,用于在前端展示echart图表nn操作:nn        1.在pojo类中对应数据库的BLOB字段的数据类型设置为byte[]类型nn        2.在mapper.xml中该字段的JDBCType设置为BLOB,所有操作里只要需要填JDBCType的都是BLOBnn        3.执行存储操作时可...
java中Blob数据存入数据库
BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器。 n在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。 nBLOB是一个大文件,典型的BLOB是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。 n根据Eric Raymond的说法,处理BLOB的主要思想就是让文件处理器(如数据
Hibernate 5.1如何从Oracle中读取Blob数据
先回顾下以前的版本:nn1、Hibernate 3.2是采用SerializableBlob类来处理Blob对象的。nn看数据库中的image存储类型是BLOB。nn nn 相应的Hibernate 3.2处理代码:nnnpublic byte[] getPic(String isbn) throws Exception {n byte[] pic = null;n n String sql...
java 将本地图片或者XML文件存到oracle BLOB字段数据库中
import java.io.ByteArrayOutputStream;nimport java.io.File;nimport java.io.FileInputStream;nimport java.io.FileNotFoundException;nimport java.io.IOException;nimport java.io.InputStream;nimport java.sql...
插入和读取blob和clob类型数据
/******************blob*********************/npublic class Blob_Test {n //创建表n @Testn public void create(){n Connection conn=null;n PreparedStatement ps=null;n ResultSet r
java sqlite blob 读写
java sqlite bolb 将图片存入sqlite blob 字段中,然后读取sqlite
spring+mybatis下BLOB字段的图片存取代码
spring+mybatis下BLOB字段的图片存取代码,仅整理了Controller层的代码,service和dao的代码很简单,所以没有整理
mybatis获取Oracle的Blob字段转成Base64编码
由于借鉴了其他获取Oracle数据库Blob方法,试了多次没有成功,自己磨了两个小时磨了出来,在这里记录下来,以便以后查阅!nn这里使用的SpringBoot搭建的maven环境,只需将springboot的包引入即可,并且数据库中需要创建一张测试表,里面有Blob的字段,这里我建的表叫test表,且里面有个blob字段叫ZPnn1.创建测试Mapper文件nn这里返回的值为Map&amp;lt;Obje...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 数据库课程表字段 数据库课程字段