999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Mysql數(shù)據(jù)庫中存取圖片的Java實(shí)現(xiàn)

2013-09-12 04:24:52周建儒
電子測試 2013年20期
關(guān)鍵詞:數(shù)據(jù)庫

周建儒

(四川信息職業(yè)技術(shù)學(xué)院信息工程系,廣元,628040)

圖片存儲有兩種方式:一種是將圖片單獨(dú)存放在固定文件夾里,數(shù)據(jù)庫表中對應(yīng)的字段僅保存該圖片的路徑和名字;這種方式實(shí)現(xiàn)簡單,數(shù)據(jù)表中無大數(shù)據(jù),訪問速度快,但是不安全,數(shù)據(jù)維護(hù)不方便。另一種是先對圖片進(jìn)行編碼,再將編碼后的數(shù)據(jù)寫到數(shù)據(jù)庫表中,需要時(shí)再從數(shù)據(jù)庫表中讀出,然后解碼生成圖片文件;這種方式比較安全,數(shù)據(jù)維護(hù)方便靈活。本文針對這兩種方式,用程序?qū)嵗M(jìn)行分析和比較。

1 Mysql數(shù)據(jù)庫

MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),體積小,速度快,開放源碼。Mysql支持存儲二進(jìn)制文件的BLOB字段類型;BLOB是個(gè)類型系列,包括:TinyBlob、Blob、MediumBlob、LongBlob,它們可容納的最大字節(jié)數(shù)分別是255B,65K,16M,4G。

2 預(yù)編譯語句

預(yù)編譯語句PreparedStatement是java.sql的一個(gè)接口,也是Statement的子接口。通過Statement對象執(zhí)行SQL語句時(shí),需要將SQL語句發(fā)送給DBMS進(jìn)行編譯后再執(zhí)行。而預(yù)編譯語句是在創(chuàng)建PreparedStatement 對象時(shí)就指定了SQL語句,并發(fā)送給DBMS進(jìn)行編譯,當(dāng)該編譯語句被執(zhí)行時(shí),DBMS直接運(yùn)行編譯后的SQL語句,而不需要像其它SQL語句那樣先進(jìn)行編譯。

預(yù)編譯語句可以提高訪問數(shù)據(jù)庫的性能,數(shù)據(jù)庫在處理SQL語句時(shí)都有一個(gè)預(yù)編譯的過程,而預(yù)編譯對象就是把一些格式固定的SQL語句編譯后存放在數(shù)據(jù)庫緩沖池中。當(dāng)需要再次執(zhí)行相同的SQL語句時(shí)就不再進(jìn)行編譯了,直接由DBMS運(yùn)行SQL語句。所以當(dāng)需要多次執(zhí)行Statement對象的時(shí)候,使用PreparedStatement對象可以大大降低運(yùn)行時(shí)間,特別是大型數(shù)據(jù)庫,它可以有效地提高訪問數(shù)據(jù)庫的速度。

3 在Mysql數(shù)據(jù)庫中存取圖片的方法

3.1 以二進(jìn)制格式存取圖片

3.1.1 以二進(jìn)制格式將圖片寫入photo表中

3.1.2 從photo表中讀出圖片數(shù)據(jù),并生成圖片文件

3.2 以Base64編碼格式存取圖片

Base64是一種基于64個(gè)可打印字符來表示二進(jìn)制數(shù)據(jù)的表示方法。Base64編碼的基本原理是:將字符串按每3個(gè)8位(3*8=24bit)字節(jié)分為一組,把每個(gè)字符的ASCII碼轉(zhuǎn)換成8位二進(jìn)制數(shù),就是一組24位的字節(jié),再把這24位分為4個(gè)6位(4*6=24bit)字節(jié),并在每個(gè)6位的高位添加兩個(gè)0,得到4個(gè)8位的字節(jié),然后將這4個(gè)8位的字節(jié)轉(zhuǎn)換成十進(jìn)制數(shù),然后對照Base64編碼表得到對應(yīng)的編碼字符。

3.2.1 先對圖片進(jìn)行Base64編碼,再將其寫入photo表中

3.2.2 從photo表中讀出圖片文件的base64編碼,解碼后重新生成圖片文件

4 總結(jié)

用以上兩種方法在Mysql數(shù)據(jù)庫表中存儲同一個(gè)jpg格式的圖片,以二進(jìn)制數(shù)據(jù)格式存儲占用了2562個(gè)字節(jié),以Base64編碼格式存儲占用了3504個(gè)字節(jié)。可見,Base64編碼后的圖片數(shù)據(jù)增大,這是因?yàn)锽ase64編碼的數(shù)據(jù)冗余比較多,編碼后的數(shù)據(jù)長度是編碼前長度的三分之四倍。把圖片文件用base64編碼后再存入數(shù)據(jù)庫,會增大存儲空間,延長圖片訪問時(shí)間,減慢系統(tǒng)的響應(yīng)速度。Base64編碼可用于HTTP環(huán)境下傳遞較長的標(biāo)識信息。例如:在Hibernate中就把UUID編碼為一個(gè)字符串,用作HTTP表單和HTTPGETURL中的參數(shù)。

[1]Y.Daniel Liang,Java語言程序設(shè)計(jì)基礎(chǔ)篇[M].北京:機(jī)械工業(yè)出版社,2009.

[2]Paul DuBois,MySQL技術(shù)內(nèi)幕(第4版)[M].北京:人民郵電出版社,2011.

[3]尹繼平,Java范例大全[M].北京:機(jī)械工業(yè)出版社,2009.[4]劉書倫,Java程序設(shè)計(jì)[M].北京:國防科技大學(xué)出版社,2011.

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 国产大片黄在线观看| 在线欧美一区| 国产欧美日韩va另类在线播放| 久久99国产综合精品1| 一级片免费网站| 丰满少妇αⅴ无码区| 亚洲成人免费看| 国产免费人成视频网| 亚洲天堂网在线播放| 国产一级裸网站| 精品一区二区三区视频免费观看| 在线观看无码av五月花| 亚洲日本一本dvd高清| 日本一区二区不卡视频| 91九色国产在线| 亚洲天堂视频在线免费观看| 在线播放国产99re| 无码福利日韩神码福利片| 国产亚洲高清视频| 国产亚洲精品自在久久不卡 | 都市激情亚洲综合久久| 少妇高潮惨叫久久久久久| 久久这里只有精品国产99| 国产99精品久久| 伊人精品成人久久综合| 欧美日韩在线亚洲国产人| 欧美一区二区啪啪| 成人综合网址| 国产91九色在线播放| 伊人久久婷婷五月综合97色| 天天摸天天操免费播放小视频| 高清不卡毛片| 色综合热无码热国产| 天天色天天综合| 91探花在线观看国产最新| 亚洲黄网视频| 亚洲第一黄片大全| 国产黄色视频综合| 黄色网址手机国内免费在线观看| 中文字幕乱码中文乱码51精品| 97se综合| 秋霞午夜国产精品成人片| 黄色一及毛片| 天天摸夜夜操| 国产一区二区三区免费观看| 久久人人爽人人爽人人片aV东京热| 欧美亚洲日韩中文| 成人综合在线观看| 制服丝袜 91视频| 色综合五月| 国产成人啪视频一区二区三区 | 久久婷婷六月| 国产精品亚洲精品爽爽 | 2020国产精品视频| 老司机精品一区在线视频| 日本午夜在线视频| 亚洲精品成人福利在线电影| 欧美精品二区| 成人午夜视频网站| 欧美全免费aaaaaa特黄在线| 亚洲国产欧美自拍| 99热这里只有精品2| 不卡的在线视频免费观看| 免费一级成人毛片| 久久a级片| 青青青伊人色综合久久| 99久视频| 91在线免费公开视频| 九九久久精品国产av片囯产区| 欧洲精品视频在线观看| A级毛片无码久久精品免费| 一级成人欧美一区在线观看| 99爱视频精品免视看| 欧美国产日韩在线| 亚洲成人高清在线观看| 91探花国产综合在线精品| 狠狠色综合网| 色天天综合| 天天综合亚洲| 97se亚洲综合在线天天| 9啪在线视频| 亚洲成A人V欧美综合天堂|