jdbc 面试

CallableStatement 对象为所有的 DBMS 提供了一种以标准形式调用已储存过程的方法。已储存过程储存在数据库中。对已储存过程的调用是 CallableStatement对象所含的内容。这种调用是用一种换码语法来写的,有两种形式:一种形式带结果参,另一种形式不带结果参数。结果参数是一种输出 (OUT) 参数,是已储存过程的返回值。两种形式都可带有数量可变的输入(IN 参数)、输出(OUT 参数)或输入和输出(INOUT 参数)的参数。问号将用作参数的占位符。


1、Class.forName的作用 为什么要用
答:调用该访问返回一个以字符串指定类名的类的对象。

2、简述你对Statement,PreparedStatement,CallableStatement的理解 ( 15 分)
Statement 对象用于执行不带参数的简单 SQL 语句;
PreparedStatement 对象用于执行带或不带 IN 参数的预编译 SQL 语句;
CallableStatement 对象用于执行对数据库已存储过程的调用。

3、statement prestatement有什么区别
解答:后者的效率比前者高,在使用PreparedStatement对象执行SQL命令时,命令被数据库进行编译和解析,然后被放到命令缓冲区。然后,

每当执行同一个PreparedStatement对象时,它就会被再解析一次,但不会被再次编译。在缓冲区中可以发现预编译的命令,并且可以重新使用


如果要你写insert update delete 最好用preparedStatement,在有大量用户的企业级应用软件中,经常会重复执行相同的SQL命令,使用

PreparedStatement对象带来的编译次数的减少能够提高数据库的总体性能。

4、面试题:
ResultSet getResultSet(sql) {
Statement create();
Resultset rs = stmt.exe(sql)
stmt.close();
return rs;
}
上面的语句错误在什么地方?
解答:ResultSet和Statement是关联在一起的


5、说出数据连接池的工作机制是什么?
答:J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用
的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调
用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。


6、在Jcbc编程时为什么要养成经常释放连接的习惯( 10 分)
答:为了确保 JDBC 资源不在出现异常或错误等情况下被不正常关闭,我们应该在使用完 JDBC 资源之后关闭且释放它们。JDBC 连接池提供了

JDBC 连接定义和数目有限的连接,如果数量不够,就需要长时间的等待。不正常关闭 JDBC 连接会导致等待回收无效的 JDBC 连接。只有正常

的关闭和释放 JDBC 连接,JDBC 资源才可以被快速的重用使性能得到改善。

7、hibernate和Jdbc?
两个之间基本不是个级别的,hibernate包括了jdbc,jdbc是java用来连接,访问数据库的,hibernate需要封装jdbc才能运行。jdbc连接数据

库和hibernate大致相同,因为hibernate只是将配置信息写入到xml文件中,剩下连接数据库,访问数据库都要通过jdbc的。hibernate是一个

持久层框架,hibernate将表的信息映射到xml文件中,再从xml文件映射到相应的持久化类中,这样可以使用hibernate独特的查询语言hql了。

而jdbc访问数据库是通过sql语句直接访问的。hibernate的hql查询语句返回的是List<Object[]>类,而jdbc通过statement返回的查询结果是

ResultSet并且有时候需要自己封装到List中。hibernate其重要区别在于hibernate具有访问层(DAO类层),该层是HQL查询语句唯一出现的位置

,再往上层则不会出现查询语句,而jdbc可以随时连接随时访问,试想如果1000个类都有sql查询语句,如果表名变了是不是要全部重写1000个

类的查询语句呢?hibernate只需要将DAO层的类变了就行了,上层毫无关系,对数据维护有重要作用。再者,使用jdbc依然可以建立DAO层,但

是却需要大量的代码支持,而hibernate自己就有,不用编写。应该说全了吧


8、Jdo是什么
答:JDO是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对

象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上

,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库

(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。


3. jdbc接口概貌  接口分为两个层次,一个是面向程序开发人员的JDBC API。另外一个是底层的JDBC Driver API。
3. 1. JDBC API
  JDBC API 被描述成为彝族抽象的Java接口,似的应用程序远可以对某个数据库打开连接,执行SQL语句并且处理结果。

最重要的接口是:
* java.sql.DriverManager 处理驱动的调入并且对产生新的数据库连接提供支持。
* java.sql.Connection 代表对特定数据库的连接。
* java.sql.Statement  代表一个特定的容器,来对一个特定的数据库执行SQL语句。
* java.sql.ResultSet  控制对一个特定语句的行数据的存取。
其中java.sql.Statement又有两个子类型:
1. java.sql.PreparedStatement  用于执行预编译的SQL语句。
2. java.sql.CallableStatement  用于执行对一个数据库内嵌过程的调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值