使用hibnate向数据库写入图片对象

写入到数据库:

@Test
    public void testwriteBlob() throws Exception{
        Students s = new Students(1,"张三","男",new Date(),"河南");
        //获取照片
        File f = new File("/Users/liqiye/Desktop/banner1.jpg");
        //获得输入流
        InputStream input = new FileInputStream(f);
        //创建Blob对象
        Blob image = Hibernate.getLobCreator(session).createBlob(input, input.available());
        //设置照片属性
        s.setPicture(image);
        session.save(s);
        
    }

从数据库读取出来:

@Test
    public void testReadBlob() throws Exception{
        Students s = (Students)session.get(Students.class, 1);
        Blob b = s.getPicture();
        //获得输入流
        InputStream input = b.getBinaryStream();
        
        File f = new File("/Users/liqiye/Desktop/dest.jpg");
        //获得输出流
        OutputStream out = new FileOutputStream(f);
        //创建缓存区
        byte[] buffer = new byte[input.available()];
        //将输入流读到缓冲区里
        input.read(buffer);
        //从缓冲区写出到文件
        out.write(buffer);
        input.close();
        out.close();
        
    }

时间: 2024-10-04 18:06:22

使用hibnate向数据库写入图片对象的相关文章

C# 文件与二进制互转数据库写入读出

//这个方法是浏览文件对象 private void button1_Click(object sender, EventArgs e) { //用户打开文件浏览 using (OpenFileDialog dialog = new OpenFileDialog()) { //只能单选一个文件 dialog.Multiselect = false; //选择一个文件 if (dialog.ShowDialog() == DialogResult.OK) { try { //把选择的文件路径给tx

无法为数据库中的对象分配空间,因为'PRIMARY'文件组已满

用SQL Server2012,做数据保存时出错,错误信息:无法为数据库'***'中的对象'***'分配空间,因为'PRIMARY'文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 解决办法:打开SQL Server Management Studio,右键报错的数据库,选择"属性",弹出对话框,选择"文件"页签,查看是否限制了数据库文件增长,若没有做限制,再查看磁盘剩余空间是否足够

Android中使用SoftReference缓存图片对象

Java中的SoftReference即对象的软引用.如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它:如果内存空间不足了, 就会回收这些对象的内存.只要垃圾回收器没有回收它,该对象就可以被程序使用.软引用可用来实现内存敏感的高速缓存.使用软引用能防止内存泄露,增强程序的健壮性.   SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该 Java对象的回收.也就是说,一旦SoftReference保存了对一个Java对象的

android 读取,写入图片到sd卡源码

<pre name="code" class="html"><!--<span style="font-family: Arial, Helvetica, sans-serif;">在AndroidMainfest.xml文件中添加</span><span style="font-family: Arial, Helvetica, sans-serif;">-->&l

TuSDK 简易使用方法 持有图片对象方式

TuSDK 为涂图照相应用的SDK,打包后文件大小约为5M,缺点为包比较大,且图片清晰度较差一些,优点为直接可以引用滤镜贴纸,方便易用. 使用方法如下: 1.AppDelegate.m 中加入如下代码行: [TuSDKinitSdkWithAppKey:@"20411a706f17b358-00-8y5nq1"]; 记载tuSDK App 应用的key 2.ViewController 中加入如下代码行: 声明方法: 继承: @interface ViewController : Tu

未能为数据库 &#39;*&#39;中得对象&#39;*&#39;分配空间,因文件组&#39;PRIMARY&#39;已满

服务器使用mssqlserver2005,最近经常出现无法新增信息错误,查看日志,发现严重错误提示,内容大致为: 无法为数据库 'weixin_main' 中的对象 'dbo.wx_logs'.'PK_wx_logs_id' 分配空间,因为 'PRIMARY' 文件组已满.请删除不需要的文件.删除文件组中的对象.将其他文件添加到文件组或为文件组中的现有文件启用自动增长,以便增加可用磁盘空间. 打开企业管理器,右键报错的数据库,选择“属性”,弹出对话框,发现常规标签页的可用空间显示只有1.03M,

Oracle数据库插入图片和读取图片

package com.basicSql.scroll_page; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import j

C#(WinForm)上传图片保存到数据库和从数据库读取图片显示到窗体

1 //浏览图片 2 3 private void btnUp_Click(object sender, EventArgs e) 4 5 { 6 7 OpenFileDialog ofd = new OpenFileDialog(); 8 9 ofd.Title = "选择要上传的图片"; 10 11 ofd.Filter = "All Files(*.*)|*.*|位图(*.bmp)|*.bmp|JPEG(*.jpg)|*.jpg"; 12 13 ofd.Sho

从数据库读取图片路径后在页面上显示出来

从数据库读取图片路径后在页面上显示出来 代码: 1 //直接将代码放到php文件里 2 $con = mysqli_connect("localhost", "123", "123", "123");//连接数据库 3 $sql = "SELECT * FROM table";//读取表 4 $result = $con->query($sql); 5 while ($row = $result-&g