实现向MYSQL数据库中存储或提取图片文件
一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候,向数据库存储数据不同于普通的字符串存储,我们需要对这个2进制文件使用JAVA处理2进制流的API进行处理,然后再进行存储。我们需要进行以下步骤来实现:
向数据库中存储文件的时候,一样使用标准SQL语句,如: insert into database (column1, column2,..) values(v1,v2,…);注意的是,要在建立存放2进制文件的TABLE时,存放的字段要使用BLOB类型,而不是普通的VARCHAR等。BLOB是专门存储2进制文件的类型,他还有大小之分,比如mediablob,logblob等,以存储大小不同的2进制文件,一般的图形文件使用mediablob足以了。
1 见以下代码实现向MYSQL中储存图片文件:
…………………………
private final String insertquery = "insert into employeephoto (Employee_ID,Binary_Photo,LastMod,Created) values (?,?, NOW(), NOW())";
java 代码
- public void doInsertStaffPic(String loginname,String source_URL) {
-
- Connection conn = null;
-
- PreparedStatement pre = null;
- try {
-
-
- conn = DBProcess.getConnection();
-
-
- Image image = new ImageIcon(source_URL).getImage();
-
- BufferedImage bImage = new BufferedImage(image.getWidth(null),
-
- image.getHeight(null), BufferedImage.TYPE_INT_RGB);
-
- Graphics bg = bImage.getGraphics();
-
- bg.drawImage(image, 0, 0, null);
-
- bg.dispose();
-
-
-
- ByteArrayOutputStream out = new ByteArrayOutputStream();
-
- ImageIO.write(bImage, "jpg", out);
-
- byte[] buf = out.toByteArray();
-
-
- ByteArrayInputStream inStream = new ByteArrayInputStream(buf);
- pre = conn.prepareStatement(insertstaffpicquery);
- pre.setString(1, loginname);
- pre.setBinaryStream(2, inStream, inStream.available());
-
-
- pre.executeUpdate();
- } catch (Exception exc) {
- exc.printStackTrace();
- }
- finally {
- try {
- pre.close();
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
2 下代码实现从MYSQL中获取图片文件并写入本地文件系统:
…………………………
private final String writeoutquery = "insert into employeephoto (Employee_ID,Binary_Photo,LastMod,Created) values (?,?, NOW(), NOW())";
java 代码
-
-
- public void doGetAndShowStaffPic(String loginname, String dir) {
- FileOutputStream output = null;
-
- InputStream input = null;
- Connection conn = null;
- ResultSet rs = null;
- PreparedStatement pre = null;
- try {
-
- conn = DBProcess.getConnection();
- pre = conn.prepareStatement(writeoutquery);
- pre.setString(1, loginname);
- rs = pre.executeQuery();
- if (rs.next()) {
-
-
- Blob image = rs.getBlob("Binary_Photo");
-
-
- Input = image.getBinaryStream();
- try {
-
-
- output = new FileOutputStream(dir);
- } catch (FileNotFoundException e1) {
- e1.printStackTrace();
- }
-
- byte[] rb = new byte[1024000];
- int ch = 0;
-
- try {
-
-
- while ((ch = input.read(rb)) != -1) {
- output.write(rb, 0, ch);
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- input.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- try {
- output.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- finally {
- try {
- rs.close();
- pre.close();
- conn.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
来源于javaResearch,作者 Jegg
分享到:
相关推荐
这个工具能够从MySQL数据库中提取图片,数据库中的图片路径信息被用来定位并下载到本地。默认的目标文件夹是“D:/tempfile”,用户可以根据自己的需求更改这个路径。这表明程序具有一定的灵活性,适应不同用户的环境...
在进行图片存取操作之前,我们首先需要在MySQL数据库中建立一个库,本次实验的数据表名称为thumbnail,包含了三个字段:IdImg,NameImg和DataImg。其中,IdImg是图片ID,字段值自动增加;NameImg用于存储图片的...
5. **查询与恢复**:检索图片时,需要从数据库中提取BLOB字段,然后将其写入文件系统。这个过程通常涉及SELECT语句,然后使用编程语言的相应方法将二进制数据写入新文件。 6. **性能和存储考虑**:虽然二进制流存储...
在C#编程中,将图片存储到数据库并以二进制数据的形式保存,以及在DataGridView控件中显示这些图片,是一项常见的任务。这种操作在处理大量图像数据时尤其有用,例如在开发一个需要展示产品图片的电子商务应用或者...
通过以上步骤,我们可以实现一个完整的Python Web爬虫项目,从淘宝网站抓取MM用户的相册和图片数据,并将其存储到MySQL数据库中。这个过程中涉及到的技术和知识点广泛,对于提升Python编程和Web爬虫能力大有裨益。
Blob(Binary Large Object)在数据库中用于存储二进制大对象,如图片、音频或视频文件等。在MySQL中,Blob类型字段常用于存储大块的非结构化数据。本实例将详细介绍如何在MySQL数据库中插入Blob数据,并提供源码...
标题中的“世界各国 省市县 省份 城市 三级数据库表 资源下载 mysql”表明这是一个关于全球地理信息的数据资源,特别强调了数据存储在MySQL数据库中,意味着我们可以用SQL语言来查询和操作这些数据。这个数据库可能...
在本项目中,我们利用Python编程语言,结合图像处理和文字识别技术,实现了从微信支付单据中自动提取数据并将其存储到MySQL数据库的功能。这是一个自动化处理和数据管理的典型案例,涉及到了多个关键技术点。 首先...
这种方式结合了数据库管理和文件系统的优点,同时避免了过度依赖数据库存储大量非结构化数据的缺点。 在提供的`WindowsFormsApplication`可能是一个简单的桌面应用程序示例,它实现了上述的图片存取功能。这个应用...
在本项目中,我们需要从数据库中提取图片的BLOB数据,然后将其转换回图片格式,如JPEG或PNG。 然后,我们需要关注Excel的使用。Excel是一种强大的电子表格软件,广泛用于数据处理和分析。在Python中,可以使用...
- **使用外部存储**:将图片实际存储在文件系统或专门的文件存储服务中,而在数据库中只存储指向这些文件的链接。 - **优化数据库结构**:合理设计表结构和索引,避免对BLOB字段进行不必要的操作。 - **数据库分区**...
在Web开发中,将用户上传的Excel文件读取并保存到数据库是一项常见的需求。这个项目实现了这个功能,提供了从头到尾的完整代码,对于学习和应用都非常有帮助。下面我们将详细探讨涉及的知识点。 首先,我们需要理解...
Oracle数据库系统支持多种复杂的数据类型,其中包括BLOB(Binary Large Object),用于存储非结构化的大数据,如图片、音频或视频文件。而MySQL同样提供了BLOB类型,用于相似的用途。本篇将详细讲解如何在Oracle与...
开发者可能将爬取的数据存储在MySQL数据库中,然后通过JSP页面动态查询并显示这些图片信息。这涉及到JDBC(Java Database Connectivity)技术,用于连接和操作数据库。 描述中提到的“含录像”表明该项目提供了教学...
7. **错误处理**:编程过程中,应考虑处理可能出现的错误,如网络中断、数据库连接问题或文件写入权限问题。 8. **优化与性能**:大量图片的转换可能会对数据库性能产生影响,因此需要考虑批量处理、缓存机制或异步...
它提供了直观的API和用户友好的界面,允许开发者轻松地将图片、音频等各类文件存储到数据库中,并能快速检索和读取,确保数据的安全性和完整性。通过集成此控件,开发者可以构建出更高效、更可靠的文件管理系统。 ...
在本项目中,我们主要探讨如何使用Python进行人脸检测、计算人脸向量并将其存储到数据库,以及如何比对提交图片中的人脸信息与数据库中已存的人脸信息。这是一项涉及计算机视觉和机器学习技术的任务,具体涉及到以下...
从数据库中提取的图片通常是以二进制数据的形式存储,需要先写入到临时文件夹,以便进行后续处理。C#提供了System.IO命名空间,可以用来创建、读取和删除文件。 4. **PDF转换**: 将图片转换为PDF文件,项目可能...
数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫...
描述中提到的“快速提取图片的文件名”,意味着有一种方法或工具可以高效地从大量图片中获取其文件名。这通常涉及到遍历文件夹结构,读取每个文件的元数据,并将文件名存储在一个清单或输出到屏幕上。这种操作对于...