- 浏览: 1588791 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
做个简单 图片上传和浏览的工具
package com.enhance.jdbc.blob; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; import javax.swing.DefaultListModel; import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; /* 创建 blob 字段的 表 create table img_table (img_id int auto_increment primary key, img_name varchar(255), img_data mediumblob); */ public class BlobTest { JFrame jf=new JFrame("图片管理程序"); private static Connection conn; private static PreparedStatement insert; private static PreparedStatement query; private static PreparedStatement queryAll; private DefaultListModel imageModel=new DefaultListModel(); private JList imageList=new JList(imageModel); private JTextField filePath=new JTextField(26); private JButton browserBn=new JButton("..."); private JButton uploadBn=new JButton("上传"); private JLabel imageLabel=new JLabel(); JFileChooser chooser=new JFileChooser("."); ExtensionFileFilter filter=new ExtensionFileFilter(); static{ try { Properties prop=new Properties(); prop.load(new FileInputStream("src/mysql.ini")); String driver=prop.getProperty("driver"); String url=prop.getProperty("url"); String user=prop.getProperty("user"); String pass=prop.getProperty("pass"); Class.forName(driver); conn=DriverManager.getConnection(url,user,pass); insert=conn.prepareStatement("insert into img_table(img_name,img_data) values (?,?)",Statement.RETURN_GENERATED_KEYS); query=conn.prepareStatement("select img_data from img_table where img_id=?"); queryAll=conn.prepareStatement("select img_id,img_name from img_table"); } catch (Exception e) { e.printStackTrace(); } } public void init() throws SQLException{ filter.addExtension("jpg"); filter.addExtension("jpeg"); filter.addExtension("gif"); filter.addExtension("png"); filter.setDescription("图片文件(*.jpg,*.jpeg,*.gif,*.png)"); chooser.addChoosableFileFilter(filter); chooser.setAcceptAllFileFilterUsed(false); fillListModel(); filePath.setEditable(false); //只能单选 imageList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); JPanel jp=new JPanel(); jp.add(filePath); jp.add(browserBn); browserBn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub int result=chooser.showDialog(jf, "浏览图片文件上传"); if(result==JFileChooser.APPROVE_OPTION){ filePath.setText(chooser.getSelectedFile().getPath()); } } }); jp.add(uploadBn); uploadBn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub if(filePath.getText().trim().length()>0){ upload(filePath.getText()); //请客文本框内容 filePath.setText(""); } } }); JPanel left=new JPanel(); left.setLayout(new BorderLayout()); left.add(new JScrollPane(imageLabel),BorderLayout.CENTER); left.add(jp,BorderLayout.SOUTH); jf.add(left); imageList.setFixedCellWidth(160); jf.add(new JScrollPane(imageList),BorderLayout.EAST); imageList.addMouseListener(new MouseAdapter(){ @Override public void mouseClicked(MouseEvent e) { // TODO Auto-generated method stub if(e.getClickCount()>=2){ //取出选择的List ImageHolder cur=(ImageHolder)imageList.getSelectedValue(); try { showImage(cur.getId()); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } } }); jf.setSize(620,400); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setVisible(true); } public void fillListModel() throws SQLException{ ResultSet rs=null; try { imageModel.clear(); rs=queryAll.executeQuery(); while(rs.next()){ imageModel.addElement(new ImageHolder(rs.getInt(1),rs.getString(2))); } }finally{ if(rs!=null) rs.close(); } } public void upload(String fileName){ InputStream is=null; try { String imageName=fileName.substring(fileName.lastIndexOf("\\")+1,fileName.lastIndexOf(".")); insert.setString(1, imageName); File f=new File(fileName); is=new FileInputStream(f); insert.setBinaryStream(2, is,(int)f.length()); int affect=insert.executeUpdate(); System.out.println(affect); if(affect==1) fillListModel(); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(is!=null) is.close(); } catch (Exception e2) { e2.printStackTrace(); } } } public void showImage(int id) throws SQLException{ ResultSet rs=null; try { query.setInt(1, id); rs=query.executeQuery(); if(rs.next()){ Blob imageBlob=rs.getBlob(1); imageBlob.getBinaryStream(); ImageIcon icon=new ImageIcon(imageBlob.getBytes(1l, (int)imageBlob.length())); imageLabel.setIcon(icon); } }finally{ if(rs!=null) rs.close(); } } public static void main(String[] args) throws SQLException { new BlobTest().init(); } } //----------------------------- package com.enhance.jdbc.blob; import java.io.File; import java.util.ArrayList; import java.util.Iterator; import javax.swing.filechooser.FileFilter; public class ExtensionFileFilter extends FileFilter { private String description=""; private ArrayList<String> extensions=new ArrayList<String>(); public void addExtension(String extension){ if(!extension.startsWith(".")){ extension="."+extension; extensions.add(extension.toLowerCase()); } } @Override public boolean accept(File f) { // TODO Auto-generated method stub if(f.isDirectory()) return true; String name=f.getName().toLowerCase(); for (String extension :extensions){ if(name.endsWith(extension)) return true; } return false; } public void setDescription(String aDescription){ description=aDescription; } @Override public String getDescription() { // TODO Auto-generated method stub return description; } } //---------------------------------- package com.enhance.jdbc.blob; public class ImageHolder { private int id; private String name; public ImageHolder() { super(); // TODO Auto-generated constructor stub } public ImageHolder(int id, String name) { super(); this.id = id; this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { // TODO Auto-generated method stub return name; } }
发表评论
-
C3p0 和 DBCP连接池
2013-10-06 11:14 1301package com.enhance.jdbc; ... -
JDBC 事务 和 savePoint
2013-10-06 11:14 1493package com.enhance.jdbc; ... -
ResultSetMetaData 和 DatabaseMetaData
2013-10-06 11:13 3910ResultSetMetaData:用来分析 "结果 ... -
批量执行 DDL 和 DML
2013-10-06 11:13 1459package com.enhance.jdbc; ... -
可滚动 ,可更新的 结果集
2013-10-05 12:11 1220package com.enhance.jdbc; ... -
Statement 和 PreparedStatement ,CallabelStatement
2013-10-05 11:49 1142package com.enhance.jdbc; ... -
JDBC 执行sql语句
2013-10-05 11:41 7575package com.enhance.jdbc; ... -
JDBC连接mysql
2013-10-05 11:36 1198加入 mysql的驱动jar: mysql-connect ...
相关推荐
C# 中的 BLOB 读取操作 C# 中的 BLOB(Binary Large OBject)读取操作是指从数据库中读取二进制数据的过程。BLOB 是一种二进制数据...通过使用 FileStream 对象和相关的方法,我们可以轻松地读取和写入 BLOB 数据。
### Oracle Blob类型转换为文件读取的相关知识点 ...通过以上内容,我们可以了解到如何在C#中实现Oracle数据库中Blob类型的读取和保存操作。这对于处理数据库中的多媒体文件等二进制数据非常有用。
### Java中读取Oracle数据库BLOB字段存储的图片方法详解 #### 一、背景与目的 在实际的应用开发过程中,经常会有将图片等二进制数据存入数据库的需求。Oracle数据库支持通过BLOB(Binary Large Object)类型来存储...
以上就是Java中Blob字段操作的基本流程,通过这些步骤,你可以成功地将图片或文件保存到数据库中,并能从数据库中读取和恢复这些数据。在实际开发中,根据具体需求,可能还需要处理异常、事务管理和资源关闭等问题,...
c#-操作数据库oracle的小代码,提供用于学习。代码主要实现从oracle读取、保存、上传图片等功能,使用了Oracle.DataAccess.dll,想了解相关知识的欢迎下载,有问题的请给我留言,谢谢。
在这个事例中,我们将深入探讨如何使用BLOB(Binary Large Object)数据类型来存储非结构化的数据,如图片。 BLOB是MySQL中用于存储二进制大对象的数据类型,它可以容纳图像、音频文件、视频剪辑等大量数据。在商品...
在数据库管理中,存储非结构化数据如图片、音频或视频文件时,通常会使用`CLOB`(Character Large Object)和`BLOB`(Binary Large Object)这两种数据类型。Oracle数据库系统支持这两种数据类型,用于存储大量文本...
- **性能优化**:考虑到性能因素,在读取`BLOB`数据时可以适当调整缓冲区大小以平衡读取速度和内存占用。 - **安全性**:使用`PreparedStatement`可以有效防止SQL注入攻击,提高系统的安全性。 - **异常处理**:对于...
Access数据库,作为Microsoft Office套件的一部分,是一个功能强大的关系型数据库管理系统(RDBMS),它支持多种数据类型,包括OLE对象,这使得存储图片和其他二进制大对象(BLOB)成为可能。以下是一些关键知识点:...
### Struts 使用 JDBC 的 Blob 字段保存和读取 Oracle 数据库 #### 背景介绍 在企业级应用开发中,经常会遇到需要处理文件上传下载的情况。这些文件可能包括图片、文档等各种类型的数据。传统的做法是将文件保存到...
2、com.ub:实现简单的插入及读取操作,读取后的BLOB可以生成新图片,并使用JFrame方式展现。 3、com.cc: 由于需要将两个不同库(测试代码是同一个库的两个表 IMAGETAB和 IMAGETAB3)的的照片进行更新,表里面存...
总的来说,这个示例提供了一种有效的方法来处理数据库中的图片存储,通过BASE64编码简化了数据的传输和存储,同时在数据库层面利用Blob类型保持了图片数据的完整性。不过,对于大量图片或需要安全保护的图片,更推荐...
通过以上步骤,你可以成功地在 Delphi 中实现二维数组数据的 Blob 存储和读取。实际操作时,可能还需要考虑性能优化,比如批量处理和缓存策略。对于大型数据集,可以考虑使用分块读写以减少内存占用。在实践中,可以...
本教程将深入探讨如何在Java环境下,批量地从MySQL数据库中下载存储在Blob字段中的图片,并将其保存到本地文件系统。 首先,我们需要理解Blob类型。Blob是MySQL中的一个数据类型,用于存储大量二进制数据。它分为四...
本文将详细讲解如何在VS(Visual Studio)和VC++环境中实现对象序列化,并将其保存到SQLite数据库的blob(Binary Large Object)类型字段中。同时,我们也会探讨如何从blob字段中读取并恢复这些对象。 首先,对象...
本文将深入探讨如何在Oracle中保存与读取Blob类型的文件,这一过程涉及到数据库操作、流处理以及异常管理,是IT行业中数据库应用的重要组成部分。 ### 一、保存Blob类型文件到Oracle数据库 #### 代码解析: 1. **...
可以从数据库中读取blob字段并插入到另一个表中,已经测试通过
数据库为Oracle 10g,代码为Visual Studio 2008 VC++开发,软件中的代码有BLOB存储和读取,BFILE存储与读取,FTP上传与下载,以及数据库数据的添加与删除功能。程序已经将数据库的IP,用户名,密码去掉,使用的童鞋把...