本篇文章為大家展示了怎么在MySQL中存儲文本和圖片,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
專注于為中小企業(yè)提供網(wǎng)站設計制作、成都網(wǎng)站建設服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)樂平免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
Oracle中大文本數(shù)據(jù)類型
Clob 長文本類型 (MySQL中不支持,使用的是text) Blob 二進制類型
MySQL數(shù)據(jù)庫
Text 長文本類型 TINYTEXT: 256 bytes TEXT: 65,535 bytes => ~64kb MEDIUMTEXT: 16,777,215 bytes => ~16MB LONGTEXT: 4,294,967,295 bytes => ~4GB Blob 二進制類型
例如:
建表
CREATE TABLE test( id INT PRIMARY KEY AUTO_INCREMENT, content LONGTEXT, -- 文本字段 img LONGBLOB -- 圖片字段 );
存儲文本時是以字符類型存儲,存儲圖片時是以二進制類型存儲,具體使用的設置參數(shù)方法,和獲取數(shù)據(jù)方法不同。
例如:
// 存儲文本時 // 存儲時,設置參數(shù)為字符流 FileReader reader pstmt.setCharacterStream(1, reader); // 獲取參數(shù)時 // 方式1: Reader r = rs.getCharacterStream("content"); // 獲取長文本數(shù)據(jù), 方式2: System.out.print(rs.getString("content")); // 存儲二進制圖片時 // 設置參數(shù)為2進制流 InputStream in pstmt.setBinaryStream(1, in); // 獲取2進制流 InputStream in = rs.getAsciiStream("img");
/** * 保存照片 * */ @Test public void test2(){ String sql = "insert into test(img) values(?)"; try{ con = JDBCUtil.getConnection(); pstmt = con.prepareStatement(sql); // 設置參數(shù) // 獲取文本 File file = new File("f:/a.jpg"); InputStream in = new FileInputStream(file); // 設置參數(shù)為2進制流 pstmt.setBinaryStream(1, in); // 執(zhí)行sql pstmt.executeUpdate(); in.close(); }catch (Exception e) { e.printStackTrace(); }finally{ try { JDBCUtil.close(con, pstmt); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 獲取照片 * */ @Test public void test3(){ String sql = "select * from test where id=?;"; try{ con = JDBCUtil.getConnection(); pstmt = con.prepareStatement(sql); // 設置參數(shù) pstmt.setInt(1, 2); // 執(zhí)行查詢 rs = pstmt.executeQuery(); while(rs.next()){ byte[] buff = new byte[1024]; InputStream in = rs.getAsciiStream("img"); int l=0; OutputStream out = new FileOutputStream(new File("f:/1.jpg")); while((l=in.read(buff))!=-1){ out.write(buff, 0, l); } in.close(); out.close(); } }catch (Exception e) { e.printStackTrace(); }finally{ try { JDBCUtil.close(con, pstmt); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
上述內(nèi)容就是怎么在MySQL中存儲文本和圖片,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。