mysql存儲大文本採用的是Text,Text和blob分別又分爲: java
TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT mysql
TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOBsql
對於MySQL中的Text類型,可調用以下方法設置:數據庫
PreparedStatement.setCharacterStream(index, reader, length);//注意length長度須設置,而且設置爲int型
對MySQL中的Text類型,可調用以下方法獲取:spa
Reader reader = resultSet. getCharacterStream(String columnLabel); string s = resultSet.getString(String columnLabel);
eg:插入大文本到數據庫
code
Connection conn = null; PreparedStatement st = null; ResultSet rs = null; Reader reader = null; try{ conn = JdbcUtils.getConnection(); String sql = "insert into testclob(resume) values(?)"; st = conn.prepareStatement(sql); //這種方式獲取的路徑,其中的空格會被使用「%20」代替 String path = JdbcOperaClob.class.getClassLoader().getResource("data.txt").getPath(); //將「%20」替換回空格 path = path.replaceAll("%20", " "); File file = new File(path); reader = new FileReader(file); st.setCharacterStream(1, reader,(int) file.length()); int num = st.executeUpdate(); if(num>0){ System.out.println("插入成功!!"); }
對於MySQL中的BLOB類型,可調用以下方法設置:get
PreparedStatement.setBinaryStream(i, inputStream, length);
對MySQL中的BLOB類型,可調用以下方法獲取:input
InputStream in = resultSet.getBinaryStream(String columnLabel); InputStream in = resultSet.getBlob(String columnLabel).getBinaryStream();
eg:插入二進制文件到數據庫string
Connection conn = null; PreparedStatement st = null; ResultSet rs = null; try{ conn = JdbcUtils.getConnection(); String sql = "insert into testblob(image) values(?)"; st = conn.prepareStatement(sql); //這種方式獲取的路徑,其中的空格會被使用「%20」代替 String path = JdbcOperaBlob.class.getClassLoader().getResource("01.jpg").getPath(); //將「%20」替換會空格 path = path.replaceAll("%20", " "); File file = new File(path); FileInputStream fis = new FileInputStream(file);//生成的流 st.setBinaryStream(1, fis,(int) file.length()); int num = st.executeUpdate(); if(num>0){ System.out.println("插入成功!!"); }