`

保存图片到数据库

 
阅读更多
/**
	 * 新增广告
	 */
	public boolean saveAdvertise(Advertisement advertisement,String webUrl,String url) throws Exception {
		// TODO Auto-generated method stub
		boolean b = false;
		PreparedStatement pstmt = null;
		Connection conn = null;
		ResultSet rset = null;
		try {
			conn = this.getJdbcTemplate().getDataSource().getConnection();
			conn.setAutoCommit(false);   
            BLOB blob = null;   
            String sql = "insert into HOLIDAY_ADVERTISEMENT(ADVERTISEID,ADVERTISENAME,PIC,LINKURL,HOTELADDNUM,HOLIDAYADDNUM,HOLIDAYTYPEADDNUM,PUBLISHSTATE,CHOREN) values (SEQ_ADVERTISE.nextval,?,empty_blob(),?,?,?,?,?,?)";
            /** 新增广告策略
             * 如果新增的广告频道位置在对应频道已经存在,需先将存在的频道位置设为null,然后新增就ok啦。
             * 开始-----
             **/
            String sql2 = "";
            if(advertisement.getHoteladdnum()!=null){
            	sql2 = "update HOLIDAY_ADVERTISEMENT set HOTELADDNUM = null where HOTELADDNUM = "+advertisement.getHoteladdnum()+" and CHOREN = '"+advertisement.getChoren()+"'";
            	pstmt = conn.prepareStatement(sql2);
            	pstmt.executeUpdate();
            	if(pstmt!=null){
            		pstmt.close();
            	}
            }
            if(advertisement.getHolidayaddnum()!=null){
            	sql2 = "update HOLIDAY_ADVERTISEMENT set HOLIDAYADDNUM = null where HOLIDAYADDNUM = "+advertisement.getHolidayaddnum()+" and CHOREN = '"+advertisement.getChoren()+"'";
            	pstmt = conn.prepareStatement(sql2);
            	pstmt.executeUpdate();
            	if(pstmt!=null){
            		pstmt.close();
            	}
            }
            if(advertisement.getHolidaytypeaddnum()!=null){
            	sql2 = "update HOLIDAY_ADVERTISEMENT set HOLIDAYTYPEADDNUM = null where HOLIDAYTYPEADDNUM = "+advertisement.getHolidaytypeaddnum()+" and CHOREN = '"+advertisement.getChoren()+"'";
            	pstmt = conn.prepareStatement(sql2);
            	pstmt.executeUpdate();
            	if(pstmt!=null){
            		pstmt.close();
            	}
            }
            /** 结束 **/
            pstmt = conn.prepareStatement(sql);   
            pstmt.setString(1, advertisement.getAdvertisename());
            pstmt.setString(2, advertisement.getLinkurl());
            if(advertisement.getHoteladdnum()!=null){
            	pstmt.setLong(3, advertisement.getHoteladdnum());
            }else {
//            	pstmt.setNull(3, Types.NULL);
            	pstmt.setNull(3, java.sql.Types.INTEGER);
			}
            if(advertisement.getHolidayaddnum()!=null){
            	pstmt.setLong(4, advertisement.getHolidayaddnum());
            }else {
//            	pstmt.setNull(4, Types.NULL);
            	pstmt.setNull(4, java.sql.Types.INTEGER);
			}
            if(advertisement.getHolidaytypeaddnum()!=null){
            	pstmt.setLong(5, advertisement.getHolidaytypeaddnum());
            }else {
//            	pstmt.setNull(5, Types.NULL);
            	pstmt.setNull(5, java.sql.Types.INTEGER);
			}
            pstmt.setLong(6, advertisement.getPublishstate());
            pstmt.setString(7, advertisement.getChoren());
            pstmt.executeUpdate();   
            if(pstmt!=null){
        		pstmt.close();
        	}  
  
            pstmt = conn   
                    .prepareStatement("select PIC from HOLIDAY_ADVERTISEMENT where ADVERTISENAME= ? for update");   
            pstmt.setString(1, advertisement.getAdvertisename());   
            rset = pstmt.executeQuery();   
            if (rset.next())   
                blob = (BLOB) rset.getBlob(1);   
            System.out.println(url);
            String fileName = url;
            File f = new File(webUrl+fileName);   
            FileInputStream fin = new FileInputStream(f);   
            System.out.println("file size = " + fin.available());   
            pstmt = conn   
                    .prepareStatement("update HOLIDAY_ADVERTISEMENT set PIC=? where ADVERTISENAME=?");   
            OutputStream out = blob.getBinaryOutputStream();   
            byte[] data = new byte[(int) fin.available()];   
            fin.read(data);   
            out.write(data);   
            fin.close();   
            out.close();   
            pstmt.setBlob(1, blob);   
            pstmt.setString(2, advertisement.getAdvertisename());   
  
            pstmt.executeUpdate();   
            conn.commit(); 
            /** 删除上传的文件 **/
	        File file = new File(webUrl+url);
	        if(file.exists()){
	        	file.delete();
	        }
            b = true;
        } catch (Exception e) {   
            e.printStackTrace();
        } finally{
        	if(rset!=null){
            	rset.close();
        	}
        	if(pstmt!=null){
            	pstmt.close();
        	}
        	 if(conn!=null){
             	conn.close();
         	} 
        }
		return b;
	}
 上面的代码是实际工作中的逻辑,总结一下保存图片到数据库的步骤:

一、insert into 保存数据到数据库,对应的blob地方使用empty_blob();

二、select PIC from HOLIDAY_ADVERTISEMENT where ADVERTISENAME= ? for update 查询出blob的字段,用blob保存起来。

三、update HOLIDAY_ADVERTISEMENT set PIC=? where ADVERTISENAME=? 将要保存的图片的文件流读取到blob中,替换原来的blob字段内容。具体代码在上面的程序中寻找。

 

分享到:
评论

相关推荐

    C#保存图片到数据库。

    4. **保存图片到数据库** 创建一个SQLite连接,打开数据库,创建一个SQLiteCommand对象,执行SQL命令来插入图片数据。例如: ```csharp using (var conn = new SQLiteConnection("Data Source=your_database.db;...

    保存图片到数据库 delphi

    以下是一个简单的Delphi代码示例,展示如何将图片保存到Oracle数据库: ```delphi uses OracleDB, DB, DBClient; var OracleConnection: TOracleConnection; OracleQuery: TOracleQuery; Bitmap: TBitmap; ...

    pb保存图片到数据库

    根据给定的信息,“pb保存图片到数据库”这一主题主要涉及PowerBuilder(PB)应用程序如何将图像数据存储到数据库中。以下是对该知识点的详细解析: ### 一、PowerBuilder简介 PowerBuilder 是一款由 Sybase 公司...

    picturebox保存图片到数据库并取出二进制数显示

    保存图片到数据库: 1. 将图片转换为二进制:首先,我们需要将图片文件读入内存,然后将其转换为字节数组。可以使用`System.IO.File.ReadAllBytes()`方法完成此操作。 2. 选择数据库:常见的数据库如SQL Server、...

    C#保存图片到数据库最新源码

    标题 "C#保存图片到数据库最新源码" 涉及到的是使用C#编程语言在Visual Studio 2005环境下,通过SQLite数据库来存储和管理本地图片的技术。这个项目可能是一个小型的图片管理应用,它允许用户将他们的图片保存在...

    ssh保存图片到数据库

    在这个场景中,“ssh保存图片到数据库”指的是使用SSH框架将图片数据存储到数据库中,以便于在应用中进行管理和展示。通常,这涉及到几个关键步骤: 1. **读取图片**:首先,你需要一个用户接口来上传图片,可能是...

    android保存图片到数据库

    ### Android保存图片到数据库知识点详解 #### 一、前言 在Android开发中,有时候我们需要将图片保存到数据库中,以便于后续的应用程序能够快速访问这些图片数据。本篇文章将详细解析如何在Android应用程序中实现...

    保存图片到数据库ACCESS

    标题"保存图片到数据库ACCESS"指向的核心技术是将图片数据存储到Access数据库的BLOB字段中。BLOB是Binary Large Object的缩写,专门用于存储非结构化的数据,如图像、音频或视频文件。下面我们将详细介绍这个过程。 ...

    图片保存在数据库

    这个知识点讲解了如何将图片压缩后保存在数据库中,并详细解释了图片压缩、图片存储在数据库、使用 Java 保存图片到数据库、数据库表字段、Java 图片处理、数据库字段存储图片和小图片存储在数据库的过程。

    VB保存图片到数据库中.rar

    接下来,我们将概述保存图片到Access数据库的基本步骤: 1. **打开数据库连接**:使用ADO(ActiveX Data Objects)库中的Connection对象来连接到Access数据库。这通常涉及指定数据库的路径和连接字符串。 2. **...

    图片直接保存到数据库,并在JSP页面显示

    标题“图片直接保存到数据库,并在JSP页面显示”涉及的知识点主要集中在Web开发领域,尤其是Java Web开发,包括图片处理、数据库存储以及前端展示。这里我们将深入探讨以下几个关键环节: 1. 图片数据的二进制化:...

    QT实现图片插入数据库并显示

    在使用Qt进行应用程序开发时,有时我们需要处理图像数据并将其存储到数据库中,例如MySQL。这个过程涉及到几个关键步骤:图像的读取、编码、存储、检索和显示。以下是对这些知识点的详细解释: 1. **Qt图像处理**:...

    RichTextBox 练习 保存和读取图片数据库

    RichTextBox 练习,保存和读取图片数据库 QQ:292258449

    C#保存图片到数据库并读取显示图片的方法

    C#保存图片到数据库并读取显示图片的方法 C#保存图片到数据库并读取显示图片的方法是指将图像保存到SQL Server 2000的Image字段中,从而实现图像的存储和读取。下面将详细介绍该方法的实现步骤和关键技术点。 保存...

    ASP.NET将图片以二进制的形式保存到数据库

    综上所述,ASP.NET将图片以二进制形式保存到数据库是一个实用的技术,需要权衡存储效率和查询性能,以及考虑数据管理和展示的便捷性。在实际应用中,开发者应根据项目需求选择最适合的存储策略。

    c# winform 操作oracle数据库的Blob字段,把图片存储到数据库,保存图片到数据库

    本文将详细讲解如何操作Oracle数据库中的Blob字段,以实现图片的存储和读取。Blob(Binary Large Object)字段类型用于存储大量的二进制数据,如图片、文档等。 首先,确保已安装了Oracle的客户端库,如ODP.NET ...

    将图片保存到数据库中

    在保存图片到数据库之前,首先要选择一个支持BLOB(Binary Large Object)类型的数据库。如MySQL、PostgreSQL、Oracle等关系型数据库都支持BLOB类型,可以用来存储二进制大对象,包括图片、音频和视频文件。 二、...

    图片存储到数据库保存二进制文件,并在DATAGRIDVIEW中显示出来

    3. **保存图片到数据库**: - 将图片的字节数组转换为`SqlDbType.Binary`或`DbType.Binary`类型的参数,然后执行SQL INSERT语句将数据保存到数据库中。 4. **从数据库检索图片**: - 当需要从数据库中获取图片时...

Global site tag (gtag.js) - Google Analytics