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;