JDBC-Bolb数据类型存储和查询(练习)
Posted Vodka~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JDBC-Bolb数据类型存储和查询(练习)相关的知识,希望对你有一定的参考价值。
//Blob.java
package PreparedStatementCURD;
import Instrument.GetConnection;
import org.junit.Test;
import java.io.*;
import java.sql.Connection;
import java.sql.PreparedStatement;
/**
* @description Blob 数据的插入练习(实际开发通常是设立保存文件的服务器,保存图片或者视频的url,提高相关数据库的性能
* @author Vodka
* @date 2021/07//22:03
*/
/*
* 1.mysql中,BLOB是一个二进制大型对象,可以存储大量数据的容器,它能容纳不同大小的数据。
* 2.插入BLOB类型的数据必须使用PreparedStatement, 因为BLOB类型的数据无法使用字符串拼接。
* 3.MySQL有四种BLOB类型(不同之处在于最大信息存储量的不同,其他等同)
* 类型 大小(单位:字节)
* TinyBlob 最大 255
* Blob 最大 65K
* MediumBlob 最大 16M
* LongBlob 最大 4G
* 4.通常根据需要存储的数据来定义不同的BLOB类型,当存储文件过大时,会使数据库性能下降。
* 5.如果在指定了相关的Blob类型以后,报错: xxx too large ,这时就要去修改mysql安装目录下,找到my.ini文件,
* 加上配置参数 : max_allowed_packet = 16M. 然后重启MySQL服务
* */
public class BLOB {
@Test
public void BlobInsert(){
Connection conn = null;
PreparedStatement ps = null;
try {
//建立连接,向数据库插入图片
conn = GetConnection.getConnection();
String sql = "Update Student set Photo = ? where Sno = ?";
ps = conn.prepareStatement(sql);
FileInputStream Image = new FileInputStream(new File("D:\\\\Jdbc\\\\src\\\\Image\\\\img .jpg"));
ps.setBlob(1,Image);
ps.setObject(2,3);
System.out.println( ps.executeUpdate());
} catch (Exception e){
e.printStackTrace();
}
}
}
//BlobQuery.java
package PreparedStatementCURD;
import Instrument.*;
import javax.sound.midi.Instrument;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
/**
* @author Vodka
* @date 2021/07//10:38
*/
public class BlobQuery {
public static void main(String []args){
try {
BQ();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void BQ () throws Exception{
Connection conn = GetConnection.getConnection();
String sql = "select photo from Student where Sno= ?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setObject(1,3);
ResultSet rs = ps.executeQuery();
//使用可移植性强,可读性好的代码读取
while(rs.next()){
java.sql.Blob bl = rs.getBlob("Photo");
//将Blob类型的字段下载下来,以文件方式保存本地
InputStream is = bl.getBinaryStream();
FileOutputStream fos = new FileOutputStream("img.jpg");
byte[] buffer = new byte[1024];
int len ;
while((len = is.read(buffer)) != -1){
fos.write(buffer,0,len);
}
is.close();
fos.close();
}
}
}
以上是关于JDBC-Bolb数据类型存储和查询(练习)的主要内容,如果未能解决你的问题,请参考以下文章