<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    深藍的天空下,有你有我...
    共享酸、甜、苦、辣
    posts - 23,comments - 19,trackbacks - 0
    mysql 大對象存取: 類型一般應(yīng)該用mediumblod, blob只能存2的16次方個byte, mediumblod是24次方, 一般來說夠用了.longblob是32次方有些大. MYSQL默認(rèn)配置只能存1M大小的文件,要修改配置,WIN版本的在mysql.ini文件中 修改max_allowed_packet,net_buffer_length等幾個參數(shù),或直接SET GLOBAL varName=value. linux版本可以在啟動參數(shù)后加-max_allowed_packet=xxM等幾個參數(shù). MYSQL存大對象最好直接就setBinaryStream,又快又方便. 而不要先插入空再造型成BLOB然后再setBlob 例子: import java.sql.*; import java.io.*; public class DBTest { static String driver = "org.gjt.mm.mysql.Driver"; static String url = "jdbc:mysql://localhost:3306/test"; static String user = "root"; static String passwd = "passwd"; public static void main(String[] args) throws Exception { Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url,user,passwd); int op = 1; //插入 if (op == 0) { PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)"); ps.setString(1, "aaa.exe"); InputStream in = new FileInputStream("d:/aaa.exe"); ps.setBinaryStream(2,in,in.available()); ps.executeUpdate(); ps.close(); } else { //取出 PreparedStatement ps = conn.prepareStatement("select * from tb_file where filename = ?"); ps.setString(1, "aaa.exe"); ResultSet rs = ps.executeQuery(); rs.next(); InputStream in = rs.getBinaryStream("filecontent"); System.out.println(in.available()); FileOutputStream out = new FileOutputStream("d:/bbb.exe"); byte[] b = new byte[1024]; int len = 0; while ( (len = in.read(b)) != -1) { out.write(b, 0, len); out.flush(); } out.close(); in.close(); rs.close(); ps.close(); } } catch (Exception ex) { ex.printStackTrace(System.out); } finally { try {conn.close();} catch (Exception ex) { } } } } sqlserver 大對象存取沒有什么多說的,只要是image類型就行了,注意這是column類型,有人以為它只能存 圖象.image是文件鏡象的意思. import java.sql.*; import java.io.*; public class DBTest { static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; static String url = "jdbc:microsoft:sqlserver://192.168.0.202:9999999999;DatabaseName=dddd"; static String user = "sa"; static String passwd = "ps"; public static void main(String[] args) throws Exception { Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url,user,passwd); int op = 0; //插入 if (op == 0) { PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)"); ps.setString(1, "aaa.exe"); InputStream in = new FileInputStream("d:/aaa.exe"); ps.setBinaryStream(2,in,in.available()); ps.executeUpdate(); ps.close(); } else { //取出 PreparedStatement ps = conn.prepareStatement("select * from tb_file where filename = ?"); ps.setString(1, "aaa.exe"); ResultSet rs = ps.executeQuery(); rs.next(); InputStream in = rs.getBinaryStream("filecontent"); System.out.println(in.available()); FileOutputStream out = new FileOutputStream("d:/bbb.exe"); byte[] b = new byte[1024]; int len = 0; while ( (len = in.read(b)) != -1) { out.write(b, 0, len); out.flush(); } out.close(); in.close(); rs.close(); ps.close(); } } catch (Exception ex) { ex.printStackTrace(System.out); } finally { try {conn.close();} catch (Exception ex) { } } } } ORACLE的大對象存儲有些變態(tài),要無論是Blob,還是CLOB都要求先插入一個空值,然后 查詢并鎖定這一條記錄,獲取對Lob的引用再進行填充,網(wǎng)上有太多的例子.我個人認(rèn)為 這種方法垃圾得連寫都不想寫了,你可以自己去搜索一下. 這種特別的操作既增加操作的復(fù)雜度,又違反了JDBC接口的規(guī)范,所以我極力反對這樣 使用,如果你和我有同樣的觀點.那么我提供另一種通用的方法.就是你不用LOB而用 oracle的LONG RAW來代替它們.這樣就可以象其它對象一樣操作了: create table tb_file(filename varchar2(255),filecontent LONG RAW); import java.sql.*; import java.io.*; public class BlobTest { static String driver = "oracle.jdbc.driver.OracleDriver"; static String url = "jdbc:oracle:thin:@localhost:1521:test"; static String user = "system"; static String passwd = "passwd"; public static void main(String[] args) throws Exception { Connection conn = null; try { Class.forName(driver); conn = DriverManager.getConnection(url, user, passwd); int op = 1; //插入 if (op == 0) { PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)"); ps.setString(1, "aaa.exe"); InputStream in = new FileInputStream("d:/aaa.exe"); ps.setBinaryStream(2,in,in.available()); ps.executeUpdate(); ps.close(); } else { //取出 PreparedStatement ps = conn.prepareStatement("select * from tb_file where filename = ?"); ps.setString(1, "aaa.exe"); ResultSet rs = ps.executeQuery(); rs.next(); InputStream in = rs.getBinaryStream("filecontent"); System.out.println(in.available()); FileOutputStream out = new FileOutputStream("d:/bbb.exe"); byte[] b = new byte[1024]; int len = 0; while ( (len = in.read(b)) != -1) { out.write(b, 0, len); out.flush(); } out.close(); in.close(); rs.close(); ps.close(); } } catch (Exception ex) { ex.printStackTrace(System.out); } finally { try { conn.close(); } catch (Exception ex) {} } } } 轉(zhuǎn)自:http://dev.csdn.net/author/axman/1ca2ede425e44dba9ac20c2e262e4fb8.html
    posted on 2011-06-19 02:02 三刀流の逆風(fēng) 閱讀(254) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 国产精品免费看久久久香蕉| 国产精品高清视亚洲精品| 免费无毒a网站在线观看| 国产成人免费爽爽爽视频| 中文字幕乱码亚洲精品一区| 免费AA片少妇人AA片直播| 久久亚洲精品专区蓝色区| 大地资源二在线观看免费高清| 亚洲午夜电影一区二区三区| 91免费播放人人爽人人快乐| 亚洲一级高清在线中文字幕| 国产美女在线精品免费观看| 亚洲日韩精品国产一区二区三区| 日韩免费观看视频| 一区免费在线观看| 久久99国产亚洲高清观看首页| 在线人成免费视频69国产| 亚洲白色白色在线播放| 麻豆最新国产剧情AV原创免费| 中文无码亚洲精品字幕| 亚洲AV无码一区二区三区国产| 国产精品偷伦视频免费观看了 | 亚洲AV无码专区亚洲AV桃| 国产jizzjizz视频全部免费| 边摸边吃奶边做爽免费视频99| 国产亚洲色婷婷久久99精品91| 久久国产乱子伦精品免费强 | 国产成人精品日本亚洲11| 国产免费久久精品| a级精品九九九大片免费看| 91天堂素人精品系列全集亚洲| 女人18毛片a级毛片免费| 九九久久精品国产免费看小说| 西西人体44rt高清亚洲| 最近2019中文字幕mv免费看| 一级免费黄色大片| 亚洲国产成人九九综合| 亚洲午夜精品第一区二区8050| 6080午夜一级毛片免费看 | 日本一卡精品视频免费| 亚洲另类无码专区首页|