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型別
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- SQL server儲存過程函式SQLServer儲存過程函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- jdbc使用call呼叫儲存過程報錯JDBC儲存過程
- openGauss 函式及儲存過程支援函式儲存過程
- 儲存過程vs.函式QM儲存過程函式
- MySQL自定義函式與儲存過程MySql函式儲存過程
- 函式儲存過程併發控制-案例函式儲存過程
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- MySQL儲存過程的異常處理方法MySql儲存過程
- mysql儲存過程及日期函式實踐MySql儲存過程函式
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- MySQL優化---儲存過程和儲存函式-1-轉自部落格園MySql優化儲存過程儲存函式
- Mysql 儲存過程的使用MySql儲存過程
- Oracle儲存過程乾貨(一):儲存過程基礎Oracle儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- day25-索引和函式及儲存過程索引函式儲存過程
- Mysql中儲存過程、儲存函式、自定義函式、變數、流程控制語句、游標/遊標、定義條件和處理程式的使用示例MySql儲存過程儲存函式變數
- SQLSERVER儲存過程SQLServer儲存過程
- 呼叫儲存過程儲存過程
- mysql 儲存過程MySql儲存過程
- unidac儲存過程儲存過程
- firedac儲存過程儲存過程
- Oracle儲存過程Oracle儲存過程
- Laravel 中使用 MySQL 儲存過程LaravelMySql儲存過程
- 儲存過程——公用表表示式(CTE)儲存過程
- Sql儲存過程分頁--臨時表儲存SQL儲存過程
- 瞭解使用mysql 的檢視、儲存過程、觸發器、函式....MySql儲存過程觸發器函式
- JdbcTemplate調儲存過程JDBC儲存過程
- 造數儲存過程儲存過程
- 儲存過程——遊標儲存過程