java数据库编程——Insert and Retrieve Images from MySql Table Using Java

【0】README
0.1)本文翻译自 http://harmeetsingh13.blogspot.jp/2013/03/insert-and-retrieve-images-from-mysql.html

【1】正文如下:
段1)演示 从数据库表中插入和查询出图片。大多数情况下,图片数据都存储在数据库外部的一些文件夹下,而将其路径存储到数据库。但是在一些场景下,我们需要将图片以二进制数据格式存储到数据库。
Create Table in MySQL : 
CREATE TABLE `image` (`id` varchar(45) DEFAULT NULL,`size` int(11) DEFAULT NULL,`image` longblob
);

段2) 在mysql中,我们使用blob 类型存储这样类型的数据。它 只支持5kb 的图片数据容量,但这也取决于数据库提供商。 

【2】代码示例
2.1)向数据库插入图片
import java.sql.*;
import java.io.*;
public class InsertImagesMysql{public static void main(String[] args){System.out.println("Insert Image Example!");String driverName = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost:3306/";String dbName = "test";String userName = "root";String password = "root";Connection con = null;try{Class.forName(driverName);con = DriverManager.getConnection(url+dbName,userName,password);Statement st = con.createStatement();File imgfile = new File("pic.jpg");FileInputStream fin = new FileInputStream(imgfile);PreparedStatement pre =con.prepareStatement("insert into Image values(?,?,?)");pre.setString(1,"test");pre.setInt(2,3);pre.setBinaryStream(3,(InputStream)fin,(int)imgfile.length());pre.executeUpdate();System.out.println("Successfully inserted the file into the database!");pre.close();con.close(); }catch (Exception e1){System.out.println(e1.getMessage());}}
}

2.2)从数据库查询图片并保存到本地
import java.sql.*;
import java.io.*;
public class RetriveImagesMysql{public static void main(String[] args){System.out.println("Retrive Image Example!");String driverName = "com.mysql.jdbc.Driver";String url = "jdbc:mysql://localhost:3306/";String dbName = "test";String userName = "root";String password = "root";Connection con = null;try{Class.forName(driverName);con = DriverManager.getConnection(url+dbName,userName,password);Statement stmt = con.createStatement();ResultSet rs = stmt.executeQuery("select image from image");int i = 0;while (rs.next()) {InputStream in = rs.getBinaryStream(1);OutputStream f = new FileOutputStream(new File("test"+i+".jpg"));i++;int c = 0;while ((c = in.read()) > -1) {f.write(c);}f.close();in.close();}}catch(Exception ex){System.out.println(ex.getMessage());}}
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331448.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell入门(八)之布尔运算

一、常规的布尔运算 常规的布尔运算符有:!、&&、|| 使用语法 ! exp exp && exp exp || exp [[ n op m && a op b]] ... exp为[ n op m ]或test n op m或true或false 二、条件测试的布尔运算 条件测试的布尔运算有:!、…

java switch语句_Java 14:查看更新的switch语句

java switch语句于2020年3月发布的JDK 14带有switch语句的更新版本。 这是JDK 12和JDK 13中的预览功能。 要了解差异,让我们看一个简单的示例。 假设我们要基于DayOfWeek枚举来计算每日工作时间。 使用旧的使用switch语句的方法,我们的解决方案可能如下…

java数据库编程——执行查询操作(一)

【0】README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程——执行查询操作 的基础知识 ; 2) 本文和 java数据库编程——执行查询操作(二) 是姊妹篇&#xff…

Shell入门(九)之字符串比较

一、字符串比较 字符串比较符:、!、-z、-n、str 实际上,shell不区分数值与字符串类型,数值也可以使用上面比较。 a"mk" b"maokun" 运算符说明举例检测两个字符串是否相等,相等返回 true。[ $a $b ] 返回…

java中将毫秒转换成时间_在Java中将时间单位转换为持续时间

java中将毫秒转换成时间java.util.concurrent.TimeUnit以给定的粒度单位表示Java中的持续时间,并提供跨单位转换的实用方法。 java.util.concurrent.TimeUnit最早是在Java早期(1.5)引入的,但自那时以来已经扩展了好几次。 在此博客…

java数据库编程——执行查询操作(二)

【0】README 1) 本文部分文字描述和source code 均转自 core java volume 2 , 旨在理解 java数据库编程——执行查询操作(二) 的基础知识 ; 2) 本文和 java数据库编程——执行查询操作(一&…

Shell入门(十)之echo

一、echo参数 echo [参数选项] 字符串 参数选项 -e 解析字符串中的转义字符,如\n -E 这是默认设置,不解析转义字符 -n 不输出换行,可以使用echo -e 字符串"\c" 代替 #!/bin/bash a"abc\n" echo $a echo -e…

vaadin_Vaadin提示:延迟加载和商品标识

vaadin延迟加载 在Vaadin中使用网格,树或任何其他多值组件时,您通常希望显示数据库表中的数据,并且通常数据库中有多行。 在这种情况下,加载数千甚至数百万条记录是没有意义的,这将是一个巨大的性能问题。 对于此用例&…

com.mysql.jdbc.NotUpdatable: Result Set not updatable (references no primary keys).(解决方法)

【1】异常详细信息 com.mysql.jdbc.NotUpdatable: Result Set not updatable (references no primary keys). This result set must come from a statement that was created with a result set type of ResultSet.CONCUR_UPDATABLE, the query must select only one table, …

jdk 取整数_JDK 15中的确切绝对整数

jdk 取整数JDK 15 Early Access Build b18向Math和StrictMath类引入了新方法,这些方法将在提供的值超出方法所支持的范围时抛出ArithmeticException ,而不会溢出。 这些方法为Java中的“绝对值”概念带来了Math.addExact , Math.subtractExac…

java数据库编程——可滚动和可更新的结果集

【0】README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程——可滚动和可更新的结果集 的基础知识 ; 2)for database connection config, please visit :…

Spring入门(四)之BeanFactory

一、BeanFacotry访问一个Spring bean容器的根接口。这是一个Bean容器基本客户端视图;进一步的接口如ListableBeanFactory和configurablebeanfactory供特定用途。此接口由包含许多bean定义的对象来实现,每个对象都有唯一的字符串名称标识。根据bean定义&a…

apache derby_Apache Derby数据库JVM安全策略

apache derby抽象 我已经发布了许多有关Derby的博客: Derby数据库备份 同一主机上的多个Derby网络服务器 Apache Derby数据库用户和权限 与Maven和内存中Derby数据库的集成测试 这本不打算是一个系列。 但是多年来,我越来越多地使用Derby。 我开始将…

java数据库编程——事务

【0】README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程——事务 的基础知识 ; 2)for database connection config, please visit : https://github.co…

算法九之基数排序

一、基数排序 (1)基数排序的简介 基数排序不同于其他的排序算法,它不是基于比较的算法。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。它是一种稳定的排序算法。  通常用于对数的排序选择的是最低位优先法&#xff…

在Spring中使用多个动态缓存

在第三篇有关Spring(长时间)的缓存管理器的文章中,我想通过展示如何配置多个动态创建缓存的缓存管理器来扩展前 两个 。 Spring具有CompositeCacheManager ,从理论上讲,它应该允许使用多个缓存管理器。 它通过询问基础…

java数据库编程——元数据(metadata)+web 与企业应用中的连接管理

【0】README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java数据库编程——元数据(metadata)web 与企业应用中的连接管理 的基础知识 ; 2)for database co…

托管 非托管_如何在托管的Kubernetes上备份Neo4J

托管 非托管在下面的视频中,我将解释如何对在托管Kubernetes环境中运行的Neo4J实例进行完整和增量备份。 我们将使用其他Pod进行远程备份,并将备份数据存储在托管环境提供的持久卷上。 如果您想知道如何将Neo4J部署到托管Kubernetes,请查看以…

java国际化——Locale+数字格式

【0】README 1) 本文部分文字描述转自 core java volume 2 , 测试源代码均为原创, 旨在理解 java国际化——Locale数字格式 的基础知识 ; 2) java 编程语言是第一个设计成为全面支持国际化的语言。 2.1)…