1、JDBC 如何做事務處理?
Con.setAutoCommit(false)
Con.commit();
Con.rollback();
2、寫出幾個在 Jdbc 中常用的接口
preparedStatement,callableStatement,statement,Connection,ResultSet
3、簡述你對 Statement,PreparedStatement,CallableStatement 的理解
statement 用於執行靜態 SQL 語句並返回它所生成結果的對象,在執行時確定 sql。
PreparedStatement 表示預編譯的 SQL 語句的對象。 SQL 語句被預編譯並且存儲在
PreparedStatement 對象中。然後可以使用此對象高效地多次執行該語句,可以傳參數,在得到
PreparedStatement 對象時確定 sql.
CallableStatement 用於執行 SQL 存儲過程的接口。如果有輸出參數要註冊說明是輸出參數。
4、Java 中訪問數據庫的步驟?
1 連接 Oracle 數據庫
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection
con=DriverManager.openConnection(“jdbc:oracle:thin:@localhost:1521:DataBase ”,”
UserName”,”Password ”)
1. 利用 JDBC 檢索出表中的數據
Class.forName(“”);
Connection con=DriverManager.openConnection(“ ”,” ”,” ”)
preparedStatment ps=Con.preparedStatment(“select * from [table]”);
ResultSet rs=ps.executeQuery();
While(rs.next)
{
Rs.getString(1) 或 rs.getString(“字段名”)
}
5、JDBC 中的核心類及其作用是什麼?
DriverManager
Class.forName();
DriverManager.openConnection(“”,”sa”,””)
Connection
PreparedStatement(Statement)
ResultSet rs=executeQuery() dql
While(rs.next())
{
}
executeUpdate() dml ddl
6、執行存儲過程用那一個類,如何操作輸出參數?(操作)
CallableStatement c=con. prepareCall ("{call getCustomerName(?,?)}");
c.setString(1,"1");
c.registerOutParameter(2,java.sql.Types.VARCHAR);
c.execute();
c.getString(2);
7、可能會讓你寫一段 Jdbc 連 Oracle 的程序.
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection
con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:accp","system",
"system");
8、Class.forName 的作用?爲什麼要用?
註冊一個數據庫驅動,將驅動加載到當前的 JVM 中。
9、Jdo 是什麼?
JDO 是 Java 對象持久化的新的規範,爲 java data object 的簡稱,也是一個用於存取某種數據倉庫中的對象的標準化 API。JDO 提供了透明的對象存儲,因此對開發人員來說,存儲數據對象完全不需要額外的代碼(如 JDBC API 的使用)。這些繁瑣的例行工作已經轉移到 JDO 產品提供商身上,使開發人員解脫出來,從而集中時間和精力在業務邏輯上。另外,JDO 很靈活,因爲它可以在任何數據底層上運行。JDBC 只是面向關係數據庫(RDBMS)JDO 更通用,提供到任何數據底層的存儲功能,比如關係數據庫、文件、XML 以及對象數據庫(ODBMS)等等,使得應用可移植性更強。(o/rMapping 工具 集合處理)
10、在 ORACLE 大數據量下的分頁解決方法。一般用截取 ID 方法,還有是三層嵌套方法
create or replace package myPack
is
type c_type is ref cursor;
procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type);
end;
create or replace package body myPack
is
procedure getPage(v_sql varchar2,pageSize number,pageIndex number,c out c_type)
is
pageTotal int:=0;
pageFirstRow int:=0;
pageLastRow int:=0;
rowTotal int:=0;
begin
execute immediate 'select count(*) from ('||v_sql||')' into rowTotal;
pageTotal:=ceil(rowTotal/pageSize);
if(pageIndex<1) then
raise_application_error(-20001,'頁數不能小於 1');
end if;
if(pageIndex>pageTotal) then
raise_application_error(-20001,'頁數太大,不能讀取');
end if;
pageFirstRow:=(pageIndex-1)*pageIndex+1;
pageLastRow:=pageFirstRow+pageSize;
open c for ' select * from '||v_sql||' where rownum<'||
pageLastRow||'minus select * from '||v_sql
||' where rownum<'||pageFirstRow;
end;
end;