JDBC處理大資料 二進位制資料和批處理

2021-07-05 03:46:58 字數 2191 閱讀 1625

例如,文字資料

儲存:

preparestatement.setcharacterstream(index, fis, length);

nt: index: 是預編譯sql語句中大文字資料的引數索引位置

fis:大文字資料的輸入流

length:大文字資料的長度

獲取:

方法一:

reader = resultset.getcharacterstream(「article」); //article為列名啦

方法二:

reader = resultset.getblob(i).getcharacterstream(「article」); //以bolb物件獲取當前結果集的指定列,然後獲取流

方法三:

string data = resultset.getstring(「article」); //吊炸天

範例-> 處理ascll資料

//open a fileinputstream

file f = new file("xml_data.xml");

long filelength = f.length();

fileinputstream fis = new fileinputstream(f);

//create preparedstatement and stream data

string sql = "insert into xml_data values (?,?)";

pstmt = conn.preparestatement(sql);

pstmt.setint(1,100);

pstmt.setasciistream(2,fis,(int)filelength);

pstmt.execute();

//close input stream

fis.close();

// do a query to get the row

sql = "select data from xml_data where id=100";

rs = stmt.executequery (sql);

// get the first row

if (rs.next ())

儲存:

preparestatement.setbinarystream(index, fis, length);

獲取:

resultset.getbinarystream(「binarydata」);

業務場景:當需要向資料庫傳送一批sql語句執行時,應避免向資料庫一條條的傳送執行,而應採用jdbc的批處理機制,以提公升執行效率。

實現批處理有兩種方式,第一種方式:

statement.addbatch(sql) list

執行批處理sql語句

executebatch()方法:執行批處理命令

clearbatch()方法:清除批處理命令

example:

connection conn = null;

statement st = null;

resultset rs = null;

try finally

採用statement.addbatch(sql)方式實現批處理:

優點:可以向資料庫傳送多條不同的sql語句。

缺點:sql語句沒有預編譯。

當向資料庫傳送多條語句相同,但僅引數不同的sql語句時,需重複寫上很多條sql語句。

使用批量處理的第二種方式

conn = jdbcutil.getconnection();

string sql = "insert intouser(name,password,email,birthday) values(?,?,?,?)"

;st = conn.preparestatement(sql);

for(int i=0

;i<50000;i++)}st

.executebatch();

採用preparedstatement.addbatch()實現批處理

優點:傳送的是預編譯後的sql語句,執行效率高。

缺點:只能應用在sql語句相同,但引數不同的批處理中。因此此種形式的批處理經常用於在同乙個表中批量插入資料,或批量更新表的資料。

使用JDBC處理文字資料或二進位制資料

lob large object 分為clob和blob,clob表示文字資料,blob用於表示二進位制資料.mysql儲存文字資料使用的是text而不是clob,mysql中的text和blob分別分為 tinytext text mediumtext和longtext,占用的記憶體空間分別為25...

python處理二進位制資料

處理二進位制資料離不開python的struct模組,struct理解上你可以把它理解為c語言的結構體,使用該模組的pack和unpack方法,可以很容易的把二進位制資料轉換為常用的型別資料,如整型 字元型等 結構體如下 struct header 將二進位制資料流解析為常用的資料型別,例如 pyt...

二進位制資料

今天的問題是處理。本來想在資料庫中只存儲存路徑的,但是同組的同事說別那樣,還是直接存比較好,雖然不知道為什麼一定要存,但是或許他說的有道理吧,至於為什麼暫時還沒想通。處理二進位制遇到的第乙個問題是讀寫的問題,data open filepath,rb data open filepath,wb 作為...