JDBC是什么
Java DataBase Connectivity(Java语言连接数据库)
JDBC规范介绍:
1.JAVAEE中的一种规范
2.指定Java类与关系型数据库服务器【MySql,Oracle,SqlServer】之间沟通规则
3.JDBC规范提供接口存在JDKJAR中。java.sql包
4.JDBC规范接口实现类由不同关系型数据库服务器厂商以JAR包形式提供
JDBC规范下接口介绍:
1.位置:JDBC规范下接口存在于JDK_1.8.jar下java.sql包
2.分类:
1)java.sql.DriverManager类:这个类存在于JDK_1.8下。
负责将数据库厂商提供Driver接口实现进行注册
负责在Java工程与MySql服务器之间建立一个【连接通道】
2)java.sql.Connection接口:负责管理Java工程与数据库服务器之间【连接通道】
3)java.sql.PreparedStatement接口:负责管理在【连接通道】 上进行往返交通的【交通工具】
4) java.sql.ResultSet接口:负责管理数据库服务器返回【临时表】
JDBC编程
第一步:注册驱动,建立数据库的一个连接
第一种:
try{
//创建驱动对象
java.sql.Driver driver = new com.mysql.jdbc.Driver(); //多态
//完成驱动注册
DriverManager.registerDriver(driver);
}catch(SQLException e){
e.printStackTrace();
第二种:(这种方式使用较多)
Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.mysql.jdbc.Driver");
作用是:将com.mysql.jdbc.Driver这个类装载到JVM当中。
装载过程中会自 动执行静态代码块完成驱动的注册。
第二步:获取连接对象
getConnection("jdbc:mysql://localhost:3306/testweb","root","root");
第三步:获得数据库操作对象
/**
通过连接对象Connection获取数据库操作对象Statement代码:
一个数据库连接对象可以创建多个数据库操作对象。*/
Statement st = conn.createStatement();
Statement st2 = conn.createStatement();
第四步:推送sql语句
// 推送SQL命令
String sql = "insert into person(name,age,sex,birthday,description) "+
"values('"+name+"','"+age+"','"+sex+"','"+birthday+"','"+description+"')";
int result = st.executeUpdate(sql); //执行查询,返回结果集
Statement 接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。
ps.executeUpdate 与 ps.executeQuery 区别:
1.ps.executeUpdate:
1) 负责推送插入命令【insert】,更新命令[update],删除命令[delete]
2) 返回结果对表文件进行操作时,收到影响行数,比如插入了多少行,更新了多少行
删除了多少行。返回类型为int型,可以让我们清楚的看到操作了多少行数据。
2.ps.executeQuery:
1) 负责推送查询命令【select * from 表名】
2) 返回结果是查询命令得到【临时表】,在JDBC规范中【临时表】
交给ResultSet接口实现类管理。实际上返回ResultSet实例对象
方法execute:
用于执行返回多个结果集、多个更新计数或二者组合的语句。因为多数程序员不会需要该高级功能
第五步:处理数据库返回结果,关闭连接
Connection、Statement、ResultSet都会占用一定的资源,它们需要全部释放/关闭
- 释放资源的注意事项:
- 为了保证每一个资源都可以关闭,建议将关闭资源的代码写到finally语句块当中。
- 先关闭ResultSet、再关闭Statement、最后关闭Connection。
// 关闭资源之前最好判断这些资源是否为空
Connection con = null;
Statement st = null;
ResultSet rs = null;
try {
rs.close();
st.close();
con.close();
}