详解Java基础知识——JDBC
JDBC的介绍
JDBC(Java Database Connectivity)是Java语言中用于操作关系型数据库的API,通过JDBC可以实现Java与数据库之间的交互。JDBC主要包含以下几个部分:
- DriverManager:驱动管理器,用于管理各种数据库驱动。
- Connection:连接对象,用于与数据库建立连接。
- Statement:语句对象,用于执行静态SQL查询。
- PreparedStatement:预编译语句对象,用于执行动态SQL查询。
- CallableStatement:可调用语句对象,用于执行存储过程。
- ResultSet:结果集对象,用于封装查询结果。
JDBC的使用
在使用JDBC时,需要完成以下几个步骤:
- 加载数据库驱动,通过Class.forName()方法加载对应数据库的驱动。
- 建立数据库连接,使用DriverManager.getConnection()方法建立与数据库的连接。
- 创建语句对象,使用Connection对象的createStatement()、prepareStatement()或prepareCall()方法创建语句对象。
- 执行SQL语句,使用Statement对象、PreparedStatement对象或CallableStatement对象执行SQL语句。
- 处理查询结果,使用ResultSet对象处理查询结果并对其进行业务处理。
- 关闭数据库连接和相关资源,使用Connection对象、Statement对象、PreparedStatement对象、CallableStatement对象和ResultSet对象的close()方法关闭相关资源。
示例1:使用Statement对象执行静态SQL查询
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
// 加载MySQL数据库驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 建立与MySQL数据库的连接
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
conn = DriverManager.getConnection(url, user, password);
// 创建Statement对象,执行SQL查询
stmt = conn.createStatement();
String sql = "SELECT * FROM student";
rs = stmt.executeQuery(sql);
// 处理查询结果
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
} catch(Exception e){
e.printStackTrace();
} finally{
// 关闭数据库连接和相关资源
try{if(rs != null) rs.close();}catch(Exception e){}
try{if(stmt != null) stmt.close();}catch(Exception e){}
try{if(conn != null) conn.close();}catch(Exception e){}
}
示例2:使用PreparedStatement对象执行动态SQL查询
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try{
// 加载Oracle数据库驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
// 建立与Oracle数据库的连接
String url = "jdbc:oracle:thin:@127.0.0.1:1521:test";
String user = "test";
String password = "test";
conn = DriverManager.getConnection(url, user, password);
// 创建PreparedStatement对象,执行SQL查询
String sql = "SELECT * FROM student WHERE id = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, 1);
rs = pstmt.executeQuery();
// 处理查询结果
while(rs.next()){
int id = rs.getInt("id");
String name = rs.getString("name");
int age = rs.getInt("age");
System.out.println("id: " + id + ", name: " + name + ", age: " + age);
}
} catch(Exception e){
e.printStackTrace();
} finally{
// 关闭数据库连接和相关资源
try{if(rs != null) rs.close();}catch(Exception e){}
try{if(pstmt != null) pstmt.close();}catch(Exception e){}
try{if(conn != null) conn.close();}catch(Exception e){}
}
以上两个示例分别演示了使用Statement对象和PreparedStatement对象执行静态SQL查询和动态SQL查询,在实际开发中可以根据具体的需求选择合适的方式。同时,为了避免出现资源泄露或者性能问题,我们需要在代码中及时关闭相关资源。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Java基础知识——JDBC - Python技术站