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("插入成功!!"); }