/**
* 新增广告
*/
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字段内容。具体代码在上面的程序中寻找。
分享到:
相关推荐
4. **保存图片到数据库** 创建一个SQLite连接,打开数据库,创建一个SQLiteCommand对象,执行SQL命令来插入图片数据。例如: ```csharp using (var conn = new SQLiteConnection("Data Source=your_database.db;...
以下是一个简单的Delphi代码示例,展示如何将图片保存到Oracle数据库: ```delphi uses OracleDB, DB, DBClient; var OracleConnection: TOracleConnection; OracleQuery: TOracleQuery; Bitmap: TBitmap; ...
根据给定的信息,“pb保存图片到数据库”这一主题主要涉及PowerBuilder(PB)应用程序如何将图像数据存储到数据库中。以下是对该知识点的详细解析: ### 一、PowerBuilder简介 PowerBuilder 是一款由 Sybase 公司...
保存图片到数据库: 1. 将图片转换为二进制:首先,我们需要将图片文件读入内存,然后将其转换为字节数组。可以使用`System.IO.File.ReadAllBytes()`方法完成此操作。 2. 选择数据库:常见的数据库如SQL Server、...
标题 "C#保存图片到数据库最新源码" 涉及到的是使用C#编程语言在Visual Studio 2005环境下,通过SQLite数据库来存储和管理本地图片的技术。这个项目可能是一个小型的图片管理应用,它允许用户将他们的图片保存在...
在这个场景中,“ssh保存图片到数据库”指的是使用SSH框架将图片数据存储到数据库中,以便于在应用中进行管理和展示。通常,这涉及到几个关键步骤: 1. **读取图片**:首先,你需要一个用户接口来上传图片,可能是...
### Android保存图片到数据库知识点详解 #### 一、前言 在Android开发中,有时候我们需要将图片保存到数据库中,以便于后续的应用程序能够快速访问这些图片数据。本篇文章将详细解析如何在Android应用程序中实现...
标题"保存图片到数据库ACCESS"指向的核心技术是将图片数据存储到Access数据库的BLOB字段中。BLOB是Binary Large Object的缩写,专门用于存储非结构化的数据,如图像、音频或视频文件。下面我们将详细介绍这个过程。 ...
这个知识点讲解了如何将图片压缩后保存在数据库中,并详细解释了图片压缩、图片存储在数据库、使用 Java 保存图片到数据库、数据库表字段、Java 图片处理、数据库字段存储图片和小图片存储在数据库的过程。
接下来,我们将概述保存图片到Access数据库的基本步骤: 1. **打开数据库连接**:使用ADO(ActiveX Data Objects)库中的Connection对象来连接到Access数据库。这通常涉及指定数据库的路径和连接字符串。 2. **...
标题“图片直接保存到数据库,并在JSP页面显示”涉及的知识点主要集中在Web开发领域,尤其是Java Web开发,包括图片处理、数据库存储以及前端展示。这里我们将深入探讨以下几个关键环节: 1. 图片数据的二进制化:...
在使用Qt进行应用程序开发时,有时我们需要处理图像数据并将其存储到数据库中,例如MySQL。这个过程涉及到几个关键步骤:图像的读取、编码、存储、检索和显示。以下是对这些知识点的详细解释: 1. **Qt图像处理**:...
RichTextBox 练习,保存和读取图片数据库 QQ:292258449
C#保存图片到数据库并读取显示图片的方法 C#保存图片到数据库并读取显示图片的方法是指将图像保存到SQL Server 2000的Image字段中,从而实现图像的存储和读取。下面将详细介绍该方法的实现步骤和关键技术点。 保存...
综上所述,ASP.NET将图片以二进制形式保存到数据库是一个实用的技术,需要权衡存储效率和查询性能,以及考虑数据管理和展示的便捷性。在实际应用中,开发者应根据项目需求选择最适合的存储策略。
本文将详细讲解如何操作Oracle数据库中的Blob字段,以实现图片的存储和读取。Blob(Binary Large Object)字段类型用于存储大量的二进制数据,如图片、文档等。 首先,确保已安装了Oracle的客户端库,如ODP.NET ...
在保存图片到数据库之前,首先要选择一个支持BLOB(Binary Large Object)类型的数据库。如MySQL、PostgreSQL、Oracle等关系型数据库都支持BLOB类型,可以用来存储二进制大对象,包括图片、音频和视频文件。 二、...
3. **保存图片到数据库**: - 将图片的字节数组转换为`SqlDbType.Binary`或`DbType.Binary`类型的参数,然后执行SQL INSERT语句将数据保存到数据库中。 4. **从数据库检索图片**: - 当需要从数据库中获取图片时...