JavaWeb——JDBC八股文、JSBC使用儲存過程、儲存函式、處理CLOB/BLOB型別
1.jdbc總結(模板、八股文):
try{
a.匯入驅動包、載入具體驅動類Class.forName("具體驅動類");
b.與資料庫建立連線connection = DriverManager.getConnection(...);
c.通過connection,獲取運算元據庫的物件(Statement\preparedStatement\callablestatement)
stmt = connection.createStatement();
d.(查詢)處理結果集rs = pstmt.executeQuery()
while(rs.next()){ rs.getXxx(..) ;}
}catch(ClassNotFoundException e )
{ ...}
catch(SQLException e)
{...
}
catch(Exception e)
{...
}
finally
{
//開啟順序,與關閉順序相反
if(rs!=null)rs.close()
if(stmt!=null) stmt.close();
if(connection!=null)connection.close();
}
--jdbc中,除了Class.forName() 丟擲ClassNotFoundException,其餘方法全部拋SQLException
2.CallableStatement:呼叫 儲存過程、儲存函式
connection.prepareCall(引數:儲存過程或儲存函式名)
引數格式:
儲存過程(無返回值return,用out引數替代):
{ call 儲存過程名(引數列表) }
儲存函式(有返回值return):
{ ? = call 儲存函式名(引數列表) }
儲存過程:
create or replace procedure addTwoNum ( num1 in number,num2 in number,result out number ) -- 1 + 2 ->3
as
begin
result := num1+num2 ;
end ;
強調:
如果通過sqlplus 訪問資料庫,只需要開啟:OracleServiceSID
通過其他程式訪問資料(sqldevelop、navicate、JDBC),需要開啟:OracleServiceSID、XxxListener
JDBC呼叫儲存過程的步驟:
a.產生 呼叫儲存過程的物件(CallableStatement) cstmt = connection.prepareCall( "..." ) ;
b.通過setXxx()處理 輸出引數值 cstmt.setInt(1, 30);
c.通過 registerOutParameter(...)處理輸出引數型別
d.cstmt.execute()執行
e.接受 輸出值(返回值)getXxx()
JDBC調儲存函式:
create or replace function addTwoNumfunction ( num1 in number,num2 in number) -- 1 + 2
return number
as
result number ;
begin
result := num1+num2 ;
return result ;
end ;
/
JDBC呼叫儲存函式:與調儲存過程的區別:
在呼叫時,注意引數:"{? = call addTwoNumfunction (?,?) }"
3.處理CLOB/BLOB型別
處理稍大型資料:
a.儲存路徑 E:\JDK_API_zh_CN.CHM
通過JDBC儲存檔案路徑,然後 根據IO操作處理
例如:JDBC將 E:\JDK_API_zh_CN.CHM 檔案 以字串形式“E:\JDK_API_zh_CN.CHM”儲存到資料庫中
獲取:1.獲取該路徑“E:\JDK_API_zh_CN.CHM” 2.IO
b.
CLOB:大文字資料 (小說->資料)
BLOB:二進位制
clob:大文字資料 字元流 Reader Writer
存
1.先通過pstmt 的? 代替小說內容 (佔位符)
2.再通過pstmt.setCharacterStream(2, reader, (int)file.length()); 將上一步的?替換為 小說流, 注意第三個引數需要是 Int型別
取:
1.通過Reader reader = rs.getCharacterStream("NOVEL") ; 將cloc型別的資料 儲存到Reader物件中
2. 將Reader通過Writer輸出即可。
blob:二進位制 位元組流 InputStream OutputStream
與CLOB步驟基本一致,區別:setBinaryStream(...) getBinaryStream(...)
相關文章
- 儲存過程與儲存函式儲存過程儲存函式
- JDBC 處理CLob和Blob型別資料JDBC型別
- 儲存過程 函式儲存過程函式
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- jdbc呼叫儲存過程JDBC儲存過程
- 儲存過程與函式儲存過程函式
- 儲存過程和函式的區別儲存過程函式
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- JDBC【PreparedStatment、批處理、處理二進位制、自動主鍵、呼叫儲存過程、函式】JDBC儲存過程函式
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- PKG_COLLECTION_LHR 儲存過程或函式返回集合型別儲存過程函式型別
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- SQL中儲存過程和函式的區別SQL儲存過程函式
- 儲存過程vs.函式QM儲存過程函式
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- 使用儲存過程儲存過程
- JDBC 呼叫儲存過程程式碼示例JDBC儲存過程
- MySQL自定義函式與儲存過程MySql函式儲存過程
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- PLSQL學習-【7儲存過程、函式】SQL儲存過程函式
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- MySQL4:儲存過程和函式MySql儲存過程函式
- openGauss 函式及儲存過程支援函式儲存過程
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- MySQL儲存過程的異常處理方法MySql儲存過程
- 儲存過程儲存過程
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- PL/SQL 中的儲存過程與函式SQL儲存過程函式
- 【fosoyo】SQL Server儲存過程/函式加/解密SQLServer儲存過程函式解密
- 儲存函式儲存函式
- 儲存過程的引數可以使用sql的函式儲存過程SQL函式
- Mysql 儲存過程的使用MySql儲存過程