1. Crie uma tabela:
Copie o código do código da seguinte forma:
eliminar tabela se existir foto;
CRIAR TABELA foto (
id INT NÃO NULO CHAVE PRIMÁRIA AUTO_INCREMENT,
nome VARCHAR(100) COMMENT 'nome',
blob de foto COMENTE 'foto'
)
MOTOR=InnoDB
CONJUNTO DE CARACTERES PADRÃO=utf8
COLLATE=utf8_general_ci;
O formato de armazenamento de dados de imagens no MySQL é do tipo blob; Blob é um contêiner que pode armazenar arquivos binários.
2. Escreva uma classe de ferramenta para acesso a dados de fluxo de imagem:
Copie o código do código da seguinte forma:
importar java.io.File;
importar java.io.FileInputStream;
importar java.io.FileNotFoundException;
importar java.io.FileOutputStream;
importar java.io.IOException;
importar java.io.InputStream;
classe pública ImageUtil {
arquivo estático privado arquivo = null;
/**
* Leia o fluxo binário da imagem do arquivo local
*
* @param arquivo
* @retornar
*/
public static FileInputStream getImageByte(String infile) {
FileInputStream imagemByte = null;
arquivo = novo arquivo(arquivo);
tentar {
imagemByte = novo FileInputStream(arquivo);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
retornar imagemByte;
}
/**
* Leia o fluxo de imagens como uma imagem
*
* @param inputStream
* @param caminho
*/
public static void readBlob(InputStream inputStream, String path) {
tentar {
FileOutputStream fileOutputStream = novo FileOutputStream(caminho);
byte[] buffer = novo byte[1024];
int len=0;
enquanto ((len = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, len);
}
inputStream.close();
arquivoOutputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. Salve os arquivos locais no banco de dados
Você precisa adicionar o driver de banco de dados MySql--mysql-connector-java-5.1.24-bin.jar
Copie o código do código da seguinte forma:
importar java.io.IOException;
importar java.io.InputStream;
importar java.sql.Connection;
importar java.sql.DriverManager;
importar java.sql.PreparedStatement;
importar java.sql.SQLException;
classe pública ImageInsert {
public static void main(String[] args) {
tentar {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String usuário = "root";
String senha = "root";
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Conexão conexão = null;
tentar {
conexão = DriverManager.getConnection(url, usuário, senha);
} catch (SQLException e) {
e.printStackTrace();
}
PreparedStatement preparadoStatement = null;
InputStream inputStream = null;
inputStream = ImageUtil.getImageByte("D://temp//photo1.png");
tentar {
String sql = "inserir na foto(id,nome,foto) valores(?,?,?)";
preparadoStatement = connection.prepareStatement(sql);
preparadoStatement.setInt(1, 1);
preparadoStatement.setString(2, "Julie");
preparadoStatement.setBinaryStream(3, inputStream,
inputStream.available());
preparadoStatement.execute();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finalmente {
tentar {
if (inputStream! = nulo)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} finalmente {
tentar {
if (preparedStatement! = null)
preparadoStatement.close();
} catch (SQLException e) {
e.printStackTrace();
} finalmente {
tentar {
conexão.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
4. Leia e gere imagens do banco de dados
Copie o código do código da seguinte forma:
importar java.io.IOException;
importar java.io.InputStream;
importar java.sql.Connection;
importar java.sql.DriverManager;
importar java.sql.ResultSet;
importar java.sql.SQLException;
importar java.sql.Statement;
classe pública ImageGet {
public static void main(String[] args) {
tentar {
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String usuário = "root";
String senha = "root";
String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8";
Conexão conexão = null;
tentar {
conexão = DriverManager.getConnection(url, usuário, senha);
} catch (SQLException e) {
e.printStackTrace();
}
Declaração declaração = null;
Conjunto de resultados conjunto de resultados = null;
InputStream inputStream = null;
tentar {
instrução = connection.createStatement();
String sql = "selecione p.photo da foto p onde id = 1";
resultSet = instrução.executeQuery(sql);
resultadoSet.next();
inputStream = resultSet.getBinaryStream("foto");
ImageUtil.readBlob(inputStream, "D://temp//photo2.png");
} catch (SQLException e) {
e.printStackTrace();
} finalmente {
tentar {
if (inputStream! = nulo)
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
} finalmente {
tentar {
if (resultSet! = nulo)
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
} finalmente {
if (instrução! = nulo)
if (instrução! = nulo)
tentar {
instrução.close();
} catch (SQLException e) {
e.printStackTrace();
} finalmente {
if (conexão! = nulo)
tentar {
conexão.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}
}
}
5.Acabou!