java 存贮二进制数据到sqlserver数据库

oracle blob ,sqlserver (image,varbinary),mysql(blob)等都是用来存数二进制对象的。一些文件excel ,图像,pdf等等,此处演示,cexcel操作过程。

存入数据:spring中jdbc和原生jdbc

spring中jdbc

String sql = "update Hr2oaEntry set ff =? where id=1 "; 
		jpm.getJdbcTemplate().update(sql,new PreparedStatementSetter() {
			
			public void setValues(PreparedStatement ps) throws SQLException {
				 try {
					ps.setBinaryStream(1, fis, fis.available());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		});

 原生jdbc

psm=conn.prepareStatement("update Hr2oaEntry set ff =? where id=1 ");
        FileInputStream fis;
        File file = new File("c:/students.xls");
		fis = new FileInputStream(file);
		final FileInputStream f=fis;
        psm.setBinaryStream(1, f, f.available());
        psm.executeUpdate();

读取数据:

String sql = "select * from  Hr2oaEntry  where id=1 "; 
			
			List<File> list=jpm.getJdbcTemplate().query(sql,new RowMapper() {
				
				public File mapRow(ResultSet rs, int arg1) throws SQLException {
					InputStream in=rs.getBinaryStream("ff");
					long temp=System.currentTimeMillis();
					File f=new File("c:/"+temp+".xls");
					OutputStream os=null;
					try{
						os=new FileOutputStream(f);
						byte buffer[]=new byte[1024];
						while((in.read(buffer))!=-1){
							os.write(buffer);
						}
						os.flush();
					}
					catch(Exception e){
						e.printStackTrace();
					}finally{
						try{
							os.close();
							in.close();
						}
						catch(Exception e){
							e.printStackTrace();
						}
					}
					return f;
				}
			});



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值