如何往mysql中添加图片
在网站开发中,往数据库中添加图片是一个常见的需求,本文将教您如何使用Java往MySQL中添加图片。
1. 获取图片数据
Java中读取图片数据的方式有很多种,本文使用FileInputStream和ByteArrayOutputStream来读取图片的二进制数据,具体代码如下:
```java
public static byte[] getImgStr(String path) throws IOException {
FileInputStream fis = new FileInputStream(path);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len = 0;
byte[] b = new byte[1024];
while ((len = fis.read(b)) != -1) {
out.write(b, 0, len);
}
// 接收out
byte[] array = out.toByteArray();
fis.close();
out.close();
return array;
}
```
2. 连接数据库并写入数据
连接MySQL数据库有很多种方式,本文使用JDBC的方式进行连接,具体代码如下:
```java
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url, user, password);
```
然后创建一个Blob,将我们获取的图片数据转换成blob类型,用PreparedStatement执行sql语句,因为它支持占位符并且有setBlob方法可以直接将我们的blob地址中的值写入数据库。具体代码如下:
```java
byte[] arr = getImgStr("图片地址");
Blob blob = connection.createBlob();
blob.setBytes(1, arr);
String sql = "insert into pictures(name, pic, date) values ('张三', ?, '2015-01-01')";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setBlob(1, blob);
ps.executeUpdate();
```
完整的代码如下所示:
```java
import java.io.*;
import java.sql.*;
public class AddPictureToMySQL {
public static void main(String[] args) {
/*
* 加载驱动
*/
try {
Class.forName("com.mysql.cj.jdbc.Driver");
// 获取连接
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
String user = "root";
String password = "123456";
try {
Connection connection = DriverManager.getConnection(url, user, password);
/*
* 插入图片
*/
byte[] arr = getImgStr("图片地址");
Blob blob = connection.createBlob();
blob.setBytes(1, arr);
String sql = "insert into pictures(name, pic, date) values ('张三', ?, '2015-01-01')";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setBlob(1, blob);
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
public static byte[] getImgStr(String path) throws IOException {
FileInputStream fis = new FileInputStream(path);
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len = 0;
byte[] b = new byte[1024];
while ((len = fis.read(b)) != -1) {
out.write(b, 0, len);
}
// 接收out
byte[] array = out.toByteArray();
fis.close();
out.close();
return array;
}
}
```
到此为止,我们就成功将一张图片存储到了MySQL中。当然,在实际应用中,还需要根据具体业务需要进行适当调整。

-
MySQL Workbench怎么建立数据库(附:sql语句创建数据库方法) 2023-07-20 12:22:29
-
MySQL Workbench是什么?(附:如何设置中文教程) 2023-07-20 11:42:31
-
mysql修改表结构的语句是什么 2023-05-14 07:00:03
-
mysql驱动是什么 2023-05-14 07:00:03
-
MySQL 语法整理介绍 2023-05-14 07:00:03
-
qt5.8如何连接mysql 2023-05-14 07:00:03
-
mysql怎么将查询结果赋给变量 2023-05-14 07:00:03
-
mysql乐观锁和悲观锁的区别是什么 2023-05-14 07:00:03
-
一起聊聊MySQL主从延时的处理方案 2023-05-14 07:00:03
-
mysql怎么查询临时表 2023-05-14 07:00:02