-
图片上传保存到数据库问题30
自己做了个图片上传保存到数据库的小程序,报错了,自己经验少,希望各位高手给指点一二!谢谢
数据库结构:
create table IMAGE
(
NAME VARCHAR2(20),
SEX VARCHAR2(2),
IMAGE BLOB
)
下面是程序代码:
AddUserInfoServlet文件代码:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.lzt.dao.AddUserInfoDao;
public class AddUserInfoServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String image=request.getParameter("image");
AddUserInfoDao add=new AddUserInfoDao();
boolean flag= add.addInfo(name, sex, image);
if(flag){
response.sendRedirect("success.jsp");
}else{
response.sendRedirect("index.jsp");
}
}
}
AddUserInfoDao文件代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class AddUserInfoDao {
public boolean addInfo(String name,String sex,String image){
Connection conn=null;
PreparedStatement pstmt=null;
FileInputStream fis=null;
File file=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=DriverManager.getConnection("jdbc:oracle:thin:@lizhitao:1521:LZT","EZGADATA","EZGADATA");
file=new File(image);
long L=file.length();
int i=(int)L;
fis=new FileInputStream(file);
String strSQL="INSERT INTO IMAGE(name,sex,image) VALUES(?,?,?)";
pstmt=conn.prepareStatement(strSQL);
pstmt.setString(1, name);
pstmt.setString(2, sex);
pstmt.setBinaryStream(3, fis, i);
if(pstmt.executeUpdate()>0){
return true;
}
else{
return false;
}
}catch(ClassNotFoundException ex){
ex.printStackTrace();
return false;
}catch(SQLException ex){
ex.printStackTrace();
return false;
}
catch(IOException ex){
ex.printStackTrace();
return false;
}
finally{
try{
fis.close();
pstmt.close();
conn.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
}
}
报错信息如下:
10/09/01 15:21:44 java.sql.SQLException: ORA-01460: 转换请求无法实现或不合理
10/09/01 15:21:44 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:189)
10/09/01 15:21:44 at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:242)
10/09/01 15:21:44 at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:554)
10/09/01 15:21:44 at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1478)
10/09/01 15:21:44 at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:888)
10/09/01 15:21:44 at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2076)
10/09/01 15:21:44 at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1986)
10/09/01 15:21:44 at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2697)
10/09/01 15:21:44 at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:457)
10/09/01 15:21:44 at com.lzt.dao.AddUserInfoDao.addInfo(AddUserInfoDao.java:29)
10/09/01 15:21:44 at com.lzt.manager.AddUserInfoServlet.doPost(AddUserInfoServlet.java:27)
10/09/01 15:21:44 at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
10/09/01 15:21:44 at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
10/09/01 15:21:44 at com.evermind.server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:765)
10/09/01 15:21:44 at com.evermind.server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:317)
10/09/01 15:21:44 at com.evermind.server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:790)
10/09/01 15:21:44 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
10/09/01 15:21:44 at com.evermind.server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
10/09/01 15:21:44 at com.evermind.util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:186)
10/09/01 15:21:44 at java.lang.Thread.run(Thread.java:619)
问题补充:7454103 写道
引用create table IMAGE
(
NAME VARCHAR2(20),
SEX VARCHAR2(2),
IMAGE BLOB
)
pstmt.setBinaryStream(3, fis, i);
参考下 保存BLOB 的保存方法:
http://sxpujs.iteye.com/blog/369050
试试看!
刚才测试了一下,发现我刚才那个方法保存.tet格式的文本文件不会报错,但是保存二进制文件就出错了。可能blob的读取那还有有些问题,我换换种blob保存方式再试试,很感谢你!2010年9月01日 15:25
5个答案 按时间排序 按投票排序
-
使用与oracle版本相同的最新jdbc driver。请参考:http://www.oracle.com/technology/global/cn/software/tech/java/sqlj_jdbc/index.html
2010年9月10日 22:43
-
引用create table IMAGE
(
NAME VARCHAR2(20),
SEX VARCHAR2(2),
IMAGE BLOB
)
pstmt.setBinaryStream(3, fis, i);
参考下 保存BLOB 的保存方法:
http://sxpujs.iteye.com/blog/369050
试试看!2010年9月01日 15:37
相关推荐
本主题将深入探讨如何使用JSP和Servlet来实现一个图片上传功能,并将图片数据存储到Oracle数据库中。 首先,我们需要理解JSP和Servlet的角色。JSP是用于创建动态内容的视图层技术,而Servlet则是Java编写的应用程序...
在这个项目中,我们主要关注的是如何在SSM框架下实现图片上传并将其信息存储到数据库,以及如何将已存储的图片信息回显出来。 首先,`Spring`作为核心容器,负责管理应用中的所有Bean,提供依赖注入(Dependency ...
在图片上传到服务器后,我们使用 `ImageUtils` 工具类将图片压缩到指定的宽度和高度。这个工具类使用 `BufferedImage` 对象来处理图片,并使用 `ImageIO` 类将图片写入到输出流中。然后,我们使用 `BASE64Encoder` ...
本示例将详细讲解如何实现一个简单的文件上传功能,将图片上传至服务器,并将图片的URL保存到数据库中。 首先,我们需要在Spring Boot项目中引入所需的依赖。对于文件上传,Spring Boot本身提供了`spring-boot-...
在Java编程中,将图片上传并存储到数据库是一项常见的任务,尤其在开发Web应用时。这一过程涉及到文件处理、数据库操作以及可能的图像处理。以下是对这个主题的详细阐述: 首先,我们需要理解基本的文件上传流程。...
当涉及到将图片等二进制数据保存到数据库时,我们通常会利用BLOB(Binary Large Object)类型的字段来存储。本篇文章将详细解释如何将图片保存到SQL数据库,并提供一个简单的源代码示例。 首先,我们需要了解BLOB...
以下是一个简单的Delphi代码示例,展示如何将图片保存到Oracle数据库: ```delphi uses OracleDB, DB, DBClient; var OracleConnection: TOracleConnection; OracleQuery: TOracleQuery; Bitmap: TBitmap; ...
以上就是使用Spring MVC实现本地图片上传、存储到数据库并实时显示的关键步骤和知识点。这涉及到前端交互、后端处理、文件操作、数据库存储和视图渲染等多个层面,每个环节都需要细心处理以确保功能的正常运行和系统...
在ASP(Active Server Pages)开发中,实现图片上传到服务器并将其信息保存到数据库是一项常见的需求。这个功能有助于创建各种在线服务,如社交媒体平台、电子商务网站等,它们需要用户能够上传个人照片或产品图片。...
上传图片到数据库并使用JDBC操作BLOB 在本篇文章中,我们将讨论如何上传图片到数据库,并使用JDBC操作BLOB(Binary Large OBject)。BLOB是一种二进制大对象,是数据库中的一种数据类型,用于存储大规模的二进制...
在C# ASP.NET环境中,将图片上传并保存到数据库中是一项常见的需求,这通常涉及到文件上传、图像处理、数据库操作等多个技术环节。本教程将详细解释这个过程。 首先,我们需要在ASP.NET网页中创建一个文件上传控件...
在IT行业中,将图片上传至服务器并保存到数据库是一项常见的操作,这涉及到多个技术环节,包括前端文件上传、后端处理、数据库存储以及文件的在线预览和下载功能。以下是对这一过程的详细阐述: 首先,前端部分通常...
今天下载了koumenglin网友分享...由于源程序没有带数据库,看到有的网友留言说不会修改把图片地址保存到数据库,我就把这个自己修改过的带数据库的完整版,拿出来分享吧。ASP批量上传图片,并提交图片地址保存在数据库。
在“asp无插件上传图片并将地址保存到数据库”的场景中,我们主要涉及到以下几个关键知识点: 1. **ASP 文件处理**:ASP 能够处理用户提交的表单数据,包括通过 HTTP 协议上传的文件。在ASP程序中,我们可以使用...
8. **应用场景**:这种技术常见于Web应用中,特别是当服务器需要存储用户上传的图片并且希望在不需要额外服务器存储空间的情况下提供图片服务时。此外,对于移动应用,BASE64编码也常用于在网络请求中传递小尺寸图片...
在C#开发环境中,将图片保存到Access数据库是一项常见的任务,尤其在构建桌面应用程序时。Access数据库虽然在处理大量数据方面可能不如SQL Server等大型数据库系统强大,但在小型项目或原型设计中,它提供了简单易用...
本篇文章将深入探讨如何使用C#将图片转换为二进制格式并保存到数据库中。 首先,我们要理解为什么需要将图片转换为二进制。在数据库中,二进制数据(通常以BLOB,即Binary Large Object形式存在)可以存储任何类型...
在ASP.NET MVC框架中,将图片上传到数据库是常见的需求,尤其在构建具有用户交互功能的网站时。本文将深入探讨如何使用C#语言来实现这个功能。 首先,我们需要了解ASP.NET MVC的基本概念。ASP.NET MVC(Model-View-...
在IT行业中,将图片上传并保存到数据库是一种常见的需求,特别是在构建网站或应用程序时,用户可能需要上传个人头像、产品图片或者任何其他形式的图像数据。本篇将详细讲解如何使用ASP(Active Server Pages)语言来...
### 文件上传到服务器中并保存到数据库中的关键技术点 在本篇内容中,主要讨论了如何使用ASP.NET技术实现文件上传功能,并将其相关信息保存至数据库的过程。这一过程涉及到了前端表单提交、后端文件处理以及数据库...