How to store text and pictures in MySQL

How to store text and pictures in MySQL

Large Text Data Types in Oracle

Clob long text type (not supported in MySQL, text is used instead)
Blob binary type

MySQL database

Text long text type TINYTEXT: 256 bytes
  TEXT: 65,535 bytes => ~64kb
  MEDIUMTEXT: 16,777,215 bytes => ~16MB
  LONGTEXT: 4,294,967,295 bytes => ~4GB
Blob binary type

For example:

Create a table

CREATE TABLE test(
   id INT PRIMARY KEY AUTO_INCREMENT,
   content LONGTEXT, -- text field img LONGBLOB -- picture field);

When storing text, it is stored in character type, and when storing pictures, it is stored in binary type. The specific method of setting parameters is different from the method of obtaining data.

For example:

// When storing text, set the parameter to character stream FileReader reader
pstmt.setCharacterStream(1, reader);
// When getting parameters // Method 1:
Reader r = rs.getCharacterStream("content");
// Get long text data, method 2:
System.out.print(rs.getString("content"));
// When storing binary images // Set the parameter to the binary stream InputStream in 
pstmt.setBinaryStream(1, in);
// Get the binary stream InputStream in = rs.getAsciiStream("img");
/**
 * Save Photo* 
 */
@Test
public void test2(){
  String sql = "insert into test(img) values(?)";
  try{
    con = JDBCUtil.getConnection();
    pstmt = con.prepareStatement(sql);
    // Set parameters // Get text File file = new File("f:/a.jpg");
    InputStream in = new FileInputStream(file);
    // Set the parameter to binary stream pstmt.setBinaryStream(1, in);
    // Execute sql
    pstmt.executeUpdate();
    in.close();
  }catch (Exception e) {
    e.printStackTrace();
  }finally{
    try {
      JDBCUtil.close(con, pstmt);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}
/**
 * Get photos * 
 */
@Test
public void test3(){
  String sql = "select * from test where id=?;";
  try{
    con = JDBCUtil.getConnection();
    pstmt = con.prepareStatement(sql);
    // Set parameters pstmt.setInt(1, 2);
    // Execute query rs = pstmt.executeQuery();
    while(rs.next()){
      byte[] buff = new byte[1024];
      InputStream in = rs.getAsciiStream("img");
      int l=0;
      OutputStream out = new FileOutputStream(new File("f:/1.jpg"));
      while((l=in.read(buff))!=-1){
        out.write(buff, 0, l);
      }
      in.close();
      out.close();
    }
  }catch (Exception e) {
    e.printStackTrace();
  }finally{
    try {
      JDBCUtil.close(con, pstmt);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

Summarize

The above is the full content of this article. I hope that the content of this article will have certain reference learning value for your study or work. Thank you for your support of 123WORDPRESS.COM. If you want to learn more about this, please check out the following links

You may also be interested in:
  • MySQL implements a solution similar to Oracle sequence
  • mysql code to implement sequence function
  • Can't connect to local MySQL through socket ''/tmp/mysql.sock'' solution
  • A complete list of commonly used MySQL functions (classified and summarized)
  • Use MySQL master-slave configuration to achieve read-write separation and reduce database pressure
  • mysql+spring+mybatis to realize code configuration of database read-write separation
  • How to completely delete the MySQL service (clean the registry)
  • Several ways to store images in MySQL database
  • Installation and use of mysql on Ubuntu (general version)
  • Combining insert and select to implement the method of "inserting the maximum value of a field in the database + 1"

<<:  Reasons and solutions for not being able to detect array changes in Vue2

>>:  How to create a virtual environment using virtualenv under Windows (two ways)

Recommend

How to enable Swoole Loader extension on Linux system virtual host

Special note: Only the Swoole extension is instal...

How to install Solr 8.6.2 in Docker and configure the Chinese word segmenter

1. Environment version Docker version 19.03.12 ce...

About the pitfall record of Vue3 transition animation

Table of contents background Problem location Fur...

Summary of four situations of joint query between two tables in Mysql

Generally speaking, in order to get more complete...

What kinds of MYSQL connection queries do you know?

Preface If the query information comes from multi...

Graphic tutorial on configuring log server in Linux

Preface This article mainly introduces the releva...

Detailed discussion of several methods for deduplicating JavaScript arrays

Table of contents 1. Set Deduplication 2. Double ...

Detailed explanation of the role of key in React

Table of contents Question: When the button is cl...

A complete guide to clearing floats in CSS (summary)

1. Parent div defines pseudo-classes: after and z...

Install mysql5.7 on Ubuntu 18.04

Ubuntu 18.04 installs mysql 5.7 for your referenc...

Using CSS3 to achieve progress bar effect and dynamically add percentage

During the project, I started using the js reques...

Vue realizes dynamic progress bar effect

This article example shares the specific code of ...

MySQL sorting principles and case analysis

Preface Sorting is a basic function in databases,...