JDBC中大文本类型的处理

Text    长文本类型
Blob    二进制类型
LONGTEXT:text文件文本
LONGBLOB:二进制文件

首先创建一个表:

mysql> create table teacher(
    -> id int primary key auto_increment,
    -> text LONGTEXT,
    -> img LONGBLOB
    -> );

保存和读取一张图片:

注意:
可以返回指定地址的文件流

InputStream inputStream = xzxx.class.getResourceAsStream  
("1.jpg");

返回指定文件的绝对路径。

String url = xzxx.class.getResource("text.txt").getPath();

    public static void main(String[] args) {
        //insert();
        read();
    }

    public static void insert() {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        String sql = "INSERT INTO teacher(img) value(?)";
        try {
            connection = jdbcUtil.getConnection();
            preparedStatement = connection.prepareStatement(sql);
            //创建流通道
            InputStream inputStream = xzxx.class.getResourceAsStream("1.jpg");
            preparedStatement.setBinaryStream(1, inputStream);
            int count = preparedStatement.executeUpdate();

            inputStream.close();
            System.out.println(count);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            jdbcUtil.close(connection, preparedStatement);
        }
    }
    public static void read() {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql = "SELECT * FROM teacher";
        try {
            connection = jdbcUtil.getConnection();
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            if(resultSet.next()) {
                //获取图片流
                InputStream inputStream = resultSet.getBinaryStream("img");
                //创建输出流
                FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\jjc.jpg"));
                byte[] buffer=new byte[1024];
                int count=-1;
                while((count = inputStream.read(buffer))!=-1) {
                    fileOutputStream.write(buffer);
                }
                fileOutputStream.close();
                inputStream.close();
            }

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            jdbcUtil.close(connection, preparedStatement, resultSet);
        }

    }

插入text文本文件:

public static void insert() {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        String sql = "INSERT INTO teacher(text) value(?)";
        try {
            connection = jdbcUtil.getConnection();
            preparedStatement = connection.prepareStatement(sql);
            //URI标记了一个网络资源,仅此而已;  URL标记了一个WWW互联网资源(用地址标记),  
            //并给出了他的访问地址。
            //getResource返回的是url  getPath返回的是绝对路径:
            //   /C:/Users/蒋家聪/eclipse-workspace/zzz/bin/zzz/text.txt
            String url = xzxx.class.getResource("text.txt").getPath();

            FileReader fileReader = new FileReader(new File(url));
            preparedStatement.setCharacterStream(1, fileReader);
            preparedStatement.executeUpdate();
            fileReader.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            jdbcUtil.close(connection, preparedStatement);
        }
    }

读取文本文件:

public static void read() {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        String sql = "SELECT * FROM teacher";
        try {
            connection = jdbcUtil.getConnection();
            preparedStatement = connection.prepareStatement(sql);
            resultSet = preparedStatement.executeQuery();
            while(resultSet.next()) {
            System.out.println(resultSet.getString("text"));
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            jdbcUtil.close(connection, preparedStatement, resultSet);
        }

    }

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/81152704