当文本数据内容超过64K字节时,可以称为大文本数据,大文本数据也称为CLOB数据。在MySQL中,提供了LONGTEXT类型的字段用来存储大文本数据。
课程案例shop数据库的goods(产品表)的brief字段就是大文本数据字段,可以存储4G以内的文本数据。写入大文本数据时,需要通过I/O流的方式从文本文件中读取文本内容。
针对大文本数据,PreparedStatement接口提供了如下几个方法用于写入大文本数据:
voidsetAsciiStream(intparameterIndex,InputStreamx,intlength)
该方法将指定的输入流写入数据库文本字段中。参数parameterIndex表示字段所在记录的列号。参数InputStream为输入流。参数length表示输入流的长度。
voidsetBinaryStream(intparameterIndex,InputStreamx,intlength)
该方法将指定的输入流写入数据库的二进制字段中。参数parameterIndex表示字段所在记录的列号。参数InputStream为输入流。参数length表示输入流的长度。
大文本数据写入数据库后,在查询时需要使用ResultSet接口将数据读出来。ResultSet接口提供了如下几个方法用于读取大文本数据:
InputStreamgetAsciiStream(intcolumnIndex)
该方法根据记录的列编号返回文本输入流。参数columnIndex表示结果集当前光标所在行的列号。
InputStreamgetAsciiStream(StringcolumnLabel)
该方法根据记录的列名称返回文本输入流。参数columnLabel表示结果集当前光标所在行的列名称。
ClobgetClob(intcolumnIndex)
该方法根据记录的列编号返回Clob对象。参数columnIndex表示结果集当前光标所在行的列号。
ClobgetClob(StringcolumnLabel)
该方法根据记录的列名称返回Clob对象。参数columnIndex表示结果集当前光标所在行的列名称。
InputStreamgetBinaryStream(intcolumnIndex)
该方法根据记录的列编号返回二进制数据输入流。参数columnIndex表示结果集当前光标所在行的列号。
InputStreamgetBinaryStream(StringcolumnLabel)
该方法根据记录的列名称返回二进制数据输入流。参数columnLabel表示结果集当前光标所在行的列名称。
BlobgetBlob(intcolumnIndex)
该方法根据记录的列编号返回Blob对象(二进制大数据对象)。参数columnIndex表示结果集当前光标所在行的列号。
BlobgetBlob(StringcolumnLabel)
该方法根据记录的列名称返回Blob对象(二进制大数据对象)。参数columnIndex表示结果集当前光标所在行的列名称。