Java面试题库之JDBC数据访问技术

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 ”)

2) 利用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中的核心类及其作用是什么?

JDBC是由一系列连接(Connection)、SQL语句(Statement)和结果集(ResultSet)构成的,其主要作用概括起来有如下3个方面:建立与数据库的连接。向数据库发起查询请求。处理数据库返回结果。

[v_notice]JDBC核心类(https://blog.csdn.net/lkk1344/article/details/49455461)[/v_notice]

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;
本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » Java面试题库之JDBC数据访问技术

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多