以下我是归纳的JDBC知识点图:
图上的知识点都可以在我其他的文章内找到相应内容。
JDBC常见面试题
JDBC操作数据库的步骤 ?
JDBC操作数据库的步骤 ?
- 注册数据库驱动。
- 建立数据库连接。
- 创建一个Statement。
- 执行SQL语句。
- 处理结果集。
- 关闭数据库连接
代码如下:
Connectionconnection=null;
Statementstatement=null;
ResultSetresultSet=null;
try{
/*
* 加载驱动有两种方式
*
* 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译
* 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高
*
* 我们一般都是使用第二种方式
* */
//1.
//DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.
Class.forName("com.mysql.jdbc.Driver");
//获取与数据库连接的对象-Connetcion
connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng","root","root");
//获取执行sql语句的statement对象
statement=connection.createStatement();
//执行sql语句,拿到结果集
resultSet=statement.executeQuery("SELECT * FROM users");
//遍历结果集,得到数据
while(resultSet.next()){
System.out.println(resultSet.getString(1));
System.out.println(resultSet.getString(2));
}
}catch(SQLExceptione){
e.printStackTrace();
}catch(ClassNotFoundExceptione){
e.printStackTrace();
}finally{
/*
* 关闭资源,后调用的先关闭
*
* 关闭之前,要判断对象是否存在
* */
if(resultSet!=null){
try{
resultSet.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(statement!=null){
try{
statement.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
if(connection!=null){
try{
connection.close();
}catch(SQLExceptione){
e.printStackTrace();
}
}
}
JDBC中的Statement 和PreparedStatement,CallableStatement的区别?
JDBC中的Statement 和PreparedStatement的区别?
区别:
- PreparedStatement是预编译的SQL语句,效率高于Statement。
- PreparedStatement支持?操作符,相对于Statement更加灵活。
- PreparedStatement可以防止SQL注入,安全性高于Statement。
- CallableStatement适用于执行存储过程。
JDBC中大数据量的分页解决方法?
JDBC中大数据量的分页解决方法?
最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。
mysql语法:
SELECT*
FROM表名
LIMIT[START],length;
oracle语法:
SELECT*FROM(
SELECT列名,列名,ROWNUMrn
FROM表名
WHEREROWNUM<=(currentPage*lineSize))temp
WHEREtemp.rn>(currentPage-1)*lineSize;