Java面试题大全(JDBC部分)

JDBC部分的面试题,可能覆盖数据库和JDBC等相关内容

1、JDBC操作数据库的步骤 ? 

1).注册数据库驱动。 

利用Class.forName()方法装载某一个数据库的驱动程序。

语法:Class.forName("JDBC 驱动程序类")

使用MySQL的驱动程序:Class.forName("com.mysql.jdbc.Driver")

使用JDBC-ODBC桥驱动程序:Class.forName("sun.jdbc.odbc.JdbcOdbcDriver")

使用ORACLE的驱动程序:Class.forName("oracle.jdbc.driver.OracleDriver")
2).连接的数据库的地址

不同的数据库连接地址不同,这点需要特别注意:

String ODBCURL = "jdbc:odbc:dbName";

String MySQLURL = "jdbc:mysql://host:port/dbName";

String SQLServerURL = "jdbc:microsoft:sqlserver://host:1433;DatabaseName=dbName";

String oracleURL = "jdbc:oracle:thin:@host:port:dbName";

3).建立数据库连接。 

Connection conn = DriverManager.getConnection(url,Login,password);
4).创建一个Statement。 

利用Connection接口的createStatement()方法创建语句对象。

语句对象SQL语句发送到对应的数据库,并获得执行结果

Statement stmt = conn.createStatement();
5).执行SQL语句。 

String sql = "select * from book";

ResultSet rs = stmt.executeQuery(sql);
6).处理结果集。 

while(rs.next())

{

    name = rs.getString(1);

    score = rs.getFloat(2);

    System.out.println(name+","+score);

 }

7).关闭数据库连接。 

    rs.close()


2.JDBC中的Statement 和PreparedStatement的区别? 
PreparedStatement是预编译的SQL语句,效率高于Statement。 
PreparedStatement支持?操作符,相对于Statement更加灵活。 
PreparedStatement可以防止SQL注入,安全性高于Statement。

3.JDBC中大数据量的分页解决方法? 

最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。 
sql语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql: 
oracle:

select * from 
(select *,rownum as tempid from student ) t 
where t.tempid between ” + pageSize*(pageNumber-1) + ” and ” + pageSize*pageNumber

mysql: 
select * from students limit ” + pageSize*(pageNumber-1) + “,” + pageSize;

sql server: 
select top ” + pageSize + ” * from students where id not in + 
(select top ” + pageSize * (pageNumber-1) + id from students order by id) +  
“order by id;

4.说说数据库连接池工作原理和实现方案? 

工作原理:JAVA EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。  
实现方案:返回的Connection是原始Connection的代理,代理Connection的close方法,当调用close方法时,不是真正关连接,而是把它代理的Connection对象放回到连接池中,等待下一次重复利用。


猜你喜欢

转载自blog.csdn.net/coding_1994/article/details/80640037