JDBC Item3: LOB(Large objects)

mysql存儲大文本採用的是Text,Text和blob分別又分爲: java

  • TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT mysql

  • TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOBsql

1、使用JDBC處理MySQL的大文本

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


2、使用JDBC處理MySQL的二進制數據

    對於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("插入成功!!");
    }
相關文章
相關標籤/搜索