一,JDBC概述
二, JDBC的工作原理
三,JDBC核心简介
JDBC API的主要功能:与数据库建立连接、执行SQL 语句、处理结果和释放资源
四,JDBC的开发步骤
五,JDBC编程模板
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
Class.forName(“JDBC驱动类”); //1.加载驱动
con=DriverManager.getConnection(URL,数据库用户名,密码);//2.获取Connection 连接对象
stmt = con.createStatement();//3.创建Statement对象,执行SQL语句
rs = stmt.executeQuery(“SELECT a, b, c FROM table1;”);//4.返回ResultSet并查询结果
while (rs.next()) {
//每次读取一行,并打印读取结果
}
}catch(Exception e){
e.printStackTrace();
}finally{
//5.释放资源
try {if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch(SQLException e) {}
}
六,开发步骤详解:
1.加载驱动
DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法:
DriverManager.registerDriver(new Driver())
DriverManager.getConnection(url, user, password)
注意:在实际开发中并不推荐采用registerDriver方法注册驱动。原因有二:
查看Driver的源代码可以看到,如果采用此种方式,会导致驱动程序注册两次,也就是在内存中会有两个Driver对象。
程序依赖mysql的api,脱离mysql的jar包,程序将无法编译,将来程序切换底层数据库将会非常麻烦。
2.获取Connection对象
DriverManager.getConnection(url,username,password)
其中username和password是登录数据库的用户名和密码。
url用来找到要连接数据库的“网址”。mysql的url:
jdbc:mysql://localhost:3306/myschool
JDBC规定url的格式由三部分组成,每个部分中间使用冒号分隔。
第一部分是jdbc,这是固定的;
第二部分是数据库厂商名称;
第三部分是数据库服务器的IP地址(localhost)、端口号(3306),以及数据库名称(myschool)组成。
Connection接口的常用方法
3. 创建Statement对象,执行SQL语句
Statement对象是通过Connection对象的方法创建的。
Statement stmt = con.createStatement();//创建Statement对象
Statement对象用来向数据库发送要执行的SQL语句。
String sql = “select username from users”;//发送给服务器的SQL语句
ResultSet rs = stmt.executeQuery(sql);//执行SQL语句,并返回结果集
Statement接口的常用方法
4.返回Resultset对象,查询结果
String sql = “select username from users”;
ResultSet rs = stmt.executeQuery(sql);//执行SQL语句,并返回结果集
//读取结果
while(rs.next()){
String userName=rs.getString(“username”);
System.out.println(userName);
}
ResultSet接口的常用方法:
5.JDBC的开发步骤——5.释放资源
1.Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互的对象,这些对象通常是ResultSet, Statement和Connection对象,特别是Connection对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不能及时、正确的关闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
2.为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。
try {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch(SQLException e) {
e.printStackTrace();
}