版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
處理大數(shù)據(jù)對象(1)—處理CLOB數(shù)據(jù)趙翔宇大對象處理主要指的是CLOB和BLOB兩種類型的字段,在CLOB中可以存儲海量文字,例如,存儲一部《三國演義》或者是《紅樓夢》等。在BLOB中可以存儲二進(jìn)制數(shù)據(jù),如圖片、電影等等,如果在程序中要想處理這樣的大對象操作,則必須使用PreparedStatement完成,所有的內(nèi)容要通過IO流的方式從大文本字段中保存和讀取。PreparedStatement提供了如下方法,專門用于寫入大對象數(shù)據(jù)大對象數(shù)據(jù)設(shè)置到數(shù)據(jù)庫中后,在查詢時(shí)就需要使用ResultSet將其讀取進(jìn)來,在ResultSet中提供了如下的方法可以讀取出大對象數(shù)據(jù)以上方法實(shí)際分為兩組,Clob和AsciiStream一般都返回大文本,而Blob和BinaryStream一般都返回二進(jìn)制數(shù)據(jù)。下面分別來看這些方法的操作,而Clob和Blob也將在操作時(shí)為大家介紹。處理CLOB數(shù)據(jù)CLOB表示大文本數(shù)據(jù),在MySQL中提供了LONGTEXT表示大文本數(shù)據(jù),此字段的最大保存數(shù)據(jù)量為4G。例如,下面有如下的數(shù)據(jù)庫創(chuàng)建腳本:DROPTABLEuserclob;CREATETABLEuserclob( id INT AUTO_INCREMENTPRIMARYKEY, name VARCHAR(30) NOTNULL, note LONGTEXT);下面向此表中插入數(shù)據(jù),其中對于note內(nèi)容,使用如下圖所示的文本表示。此文本大小是31KB保存在d盤中,文件名稱是xlh.txt實(shí)例:寫入大文本數(shù)據(jù)publicclassInsertDemo{ //定義數(shù)據(jù)庫驅(qū)動(dòng)地址
publicstaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver"; //定義數(shù)據(jù)庫鏈接地址
publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/zxy"; //定義數(shù)據(jù)庫連接用戶名
publicstaticfinalStringDBUSER="root"; //定義數(shù)據(jù)庫連接密碼
publicstaticfinalStringDBPASS="mysqladmin"; publicstaticvoidmain(String[]args){ Connectioncon=null; PreparedStatementpstmt=null; InputStreaminput=null; Stringname="趙翔宇"; Stringsql="INSERTINTOuserclob(name,note)VALUES(?,?)"; try{ Class.forName(DBDRIVER); con=DriverManager.getConnection(DBURL,DBUSER,DBPASS); pstmt=con.prepareStatement(sql); Filef=newFile("d:"+File.separator+"xlh.txt"); input=newFileInputStream(f);
pstmt.setString(1,name); pstmt.setAsciiStream(2,input,(int)f.length()); pstmt.executeUpdate(); pstmt.close(); con.close(); }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(FileNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } }}因?yàn)閮?nèi)容保存在文件中,所以使用FileInputStream類將文本文件讀取進(jìn)來,之后直接通過PreparedStatement對象將其寫入到對應(yīng)的大文本字段中。寫入完成之后,下面直接使用ResultSet將其讀取進(jìn)來,因?yàn)閷懭霑r(shí)是按照輸入流的方式寫入的,所以此時(shí)也需要按照輸入流的方式讀取進(jìn)來。實(shí)例:讀取大文本字段publicclassInsertDemo{ //定義數(shù)據(jù)庫驅(qū)動(dòng)地址
publicstaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver"; //定義數(shù)據(jù)庫鏈接地址
publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/zxy"; //定義數(shù)據(jù)庫連接用戶名
publicstaticfinalStringDBUSER="root"; //定義數(shù)據(jù)庫連接密碼
publicstaticfinalStringDBPASS="mysqladmin"; publicstaticvoidmain(String[]args){ Connectioncon=null; PreparedStatementpstmt=null; InputStreaminput=null; ResultSetrs=null; intid=1; Stringsql="SELECTname,noteFROMuserclobWHEREid=?"; try{ Class.forName(DBDRIVER); con=DriverManager.getConnection(DBURL,DBUSER,DBPASS); pstmt=con.prepareStatement(sql); pstmt.setInt(1,id);
rs=pstmt.executeQuery(); if(rs.next()){ Stringname=rs.getString(1); StringBuffernote=newStringBuffer(); System.out.println("姓名:"+name); input=rs.getAsciiStream(2); Scannerscan=newScanner(input); scan.useDelimiter("\n"); while(scan.hasNext()){ note.append(scan.next()).append("\n"); } System.out.println("內(nèi)容:"+note.toString()); input.close(); pstmt.close(); con.close(); } }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }
}}程序運(yùn)行結(jié)果(部分):姓名:趙翔宇內(nèi)容:石村,位于蒼莽山脈中,四周高峰大壑,茫茫群山巍峨。清晨,朝霞燦燦,仿若碎金一般灑落,沐浴在人身上暖洋洋。一群孩子,從四五歲到十幾歲不等,能有數(shù)十人,在村前的空地上迎……………….以上程序中,為了操作方便,使用了Scanner類接收全部的輸入內(nèi)容。由于在文本保存時(shí)存在換行,所以使用“\n”作為分隔符,之后通過循環(huán)的方式不斷的把內(nèi)容讀取出來并將內(nèi)容保存在StringBuffer中。以上的做法是將發(fā)文本數(shù)據(jù)內(nèi)容直接通過ResultSet讀取進(jìn)來,當(dāng)然也可以使用ResultSet中提供的getClob()方法,將全部的內(nèi)容變?yōu)镃lob對象的內(nèi)容。直接使用Clob可以方便的讀取大文本的數(shù)據(jù),也可以對這些文本數(shù)據(jù)進(jìn)行一些簡單的操作,如截取指定長度的文本等。Clob的常用方法如下所示:實(shí)例:使用Clob讀取內(nèi)容publicclassInsertDemo{ //定義數(shù)據(jù)庫驅(qū)動(dòng)地址
publicstaticfinalStringDBDRIVER="org.gjt.mm.mysql.Driver"; //定義數(shù)據(jù)庫鏈接地址
publicstaticfinalStringDBURL="jdbc:mysql://localhost:3306/zxy"; //定義數(shù)據(jù)庫連接用戶名
publicstaticfinalStringDBUSER="root"; //定義數(shù)據(jù)庫連接密碼
publicstaticfinalStringDBPASS="mysqladmin"; publicstaticvoidmain(String[]args){ Connectioncon=null; PreparedStatementpstmt=null; InputStreaminput=null; ResultSetrs=null; intid=1; Stringsql="SELECTname,noteFROMuserclobWHEREid=?"; try{ Class.forName(DBDRIVER); con=DriverManager.getConnection(DBURL,DBUSER,DBPASS); pstmt=con.prepareStatement(sql); pstmt.setInt(1,id);
rs=pstmt.executeQuery(); if(rs.next()){ Stringname=rs.getString(1); Clobclob=rs.getClob(2); Stringnote=clob.getSubString(1,(int)clob.length()); System.out.println("姓名:"+name); System.out.println("內(nèi)容:"+note); clob.truncate(100); System.out.println("部分度取內(nèi)容:"+clob.getSubString(1,(int)clob.length())); pstmt.close(); con.close(); } }catch(ClassNotFoundExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }
}}
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年天津工業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年大理農(nóng)林職業(yè)技術(shù)學(xué)院高職單招高職單招英語2016-2024歷年頻考點(diǎn)試題含答案解析
- 2025至2030年中國二弧深圓底刀數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年四川司法警官職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 二零二五版草原畜牧業(yè)生產(chǎn)承包合同示范文本4篇
- 2025-2030全球稅務(wù)紛爭解決方案行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025至2031年中國藥物制劑行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年全球及中國牛脂肪氧化酶(LOX)ELISA檢測試劑盒行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 2025-2030全球葬禮設(shè)備行業(yè)調(diào)研及趨勢分析報(bào)告
- 2025年全球及中國裝飾性 PVC墻紙和墻板行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報(bào)告
- 定額〔2025〕1號文-關(guān)于發(fā)布2018版電力建設(shè)工程概預(yù)算定額2024年度價(jià)格水平調(diào)整的通知
- 2024年城市軌道交通設(shè)備維保及安全檢查合同3篇
- 【教案】+同一直線上二力的合成(教學(xué)設(shè)計(jì))(人教版2024)八年級物理下冊
- 湖北省武漢市青山區(qū)2023-2024學(xué)年七年級上學(xué)期期末質(zhì)量檢測數(shù)學(xué)試卷(含解析)
- 單位往個(gè)人轉(zhuǎn)賬的合同(2篇)
- 科研倫理審查與違規(guī)處理考核試卷
- GB/T 44101-2024中國式摔跤課程學(xué)生運(yùn)動(dòng)能力測評規(guī)范
- 高危妊娠的評估和護(hù)理
- 2024年山東鐵投集團(tuán)招聘筆試參考題庫含答案解析
- 兒童10歲生日-百日宴-滿月酒生日會(huì)成長相冊展示(共二篇)
- 2023年高考全國甲卷數(shù)學(xué)(理)試卷【含答案】
評論
0/150
提交評論