本文主要分以下几个部分:
1. JDBC简介
2. JDBC中常用的类和接口
3. 如何实现数据库的连接
4. 元数据
5. 批处理
JDBC简介
JDBC(Java DataBase Connectivity)Java数据库连接,由Java编写的类和接口组成,同时也为开发人员提供了一组用于访问数据库的API,并支持SQL语句。利用JDBC可以将Java连接到不同的数据库比如oracle,MySQL,SQL Server等。
JDBC的主要功能如下:
- 建立与数据库或者其他数据源的连接
- 向数据库发送SQL命令
- 处理数据库的返回结果
- JDBC如何实现数据库的平台无关性呢?
为了让JDBC与平台无关,JDBC设计了“驱动程序管理类”也就是DriverManager类,该类会动态维护目前所有数据库产品的驱动程序对象,通过加装相应的数据库驱动程序就可以实现对相应数据库的访问。
JDBC中常用的类和接口
1.驱动程序管理类DriverManager
DriverManager类是JDBC的管理层,作用于用户和驱动程序之间,它跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。下面是代码是加载驱动程序并建立数据库连接
// 1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.与数据库进行连接
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
con = DriverManager.getConnection(url, user, password);
首先使用反射注册数据库驱动程序,上面第一行表示MySQL的驱动程序,第二行是oracle的驱动程序,url定位一个数据源,其中第一个jdbc是协议,mysql是子协议,127.0.0.1表示本机,第二个jdbc是要连接的数据库的名字,user是登录数据库的用户名,password是登录密码。
2.声明类Statement
Statement对象用于将SQL语句发送到数据库中。有三种类型的Statement对象:Statement、PreparedStatement(从Statement继承而来)、CallbleStatement(从PreparedStatement继承而来)。Statement用于执行不带参数的简单SQL语句,PreparedStatement用于执行预编译SQL语句,CallbleStatement用于执行对数据库存储过程的调用。
// 3.创建Statement对象,执行静态的sql语句
Statement state = con.createStatement();
String sql = "select * from imooc_goddess;";
// 执行sql语句
ResultSet rs = state.executeQuery(sql);
连接到数据库以后,就可以通过createStatement方法创建一个Statement对象,然后通过executeQuery方法查询数据库。Statement还有其他一些常用的的方法:
- execute():运行语句,返回是否有结果集
- executeQuery():运行查询语句,返回ResultSet对象
- executeUpdate():执行更新操作,返回更新的行数
- addBatch():增加批处理语句
- executeBatch():执行批处理语句
- clearBatch():清理批处理语句
3.数据库连接类Connection
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
con = DriverManager.getConnection(url, user, password);
4.结果集合类ResultSet
ResultSet包含符合SQL语句条件的所有行记录,通过它一整套的get方法,可以获取不同类型的数据。ResultSet.next()方法用于移动到下一行数据。
// 3.创建Statement对象,执行静态的sql语句
Statement state = con.createStatement();
String sql = "select * from imooc_goddess;";
// 执行sql语句
ResultSet rs = state.executeQuery(sql);
while(rs.next()) {
// 列数从1开始
System.out.println("id:" + rs.getInt(1));
System.out.println("name:" + rs.getString(2));
}
get系列的方法,你可以通过列名来获得数据,也可以通过列号来获取数据,不过要注意,列号是从1开始的。
如何实现数据库的连接
要实现Java和数据库的连接,首先我们得下载相应的工具。这里我以MySQL为例,所以我们得先去下载jar包,https://dev.mysql.com/downloads/connector/j/,下好后解压把jar包导入到相应的项目中即可。其次我们还可以下一个MySQL的图片界面管理工具,比如Navicat或workbench,不下用命令行也行。
搞好这些东西之后,创建一个数据库,就可以进行数据库的连接了。
private static String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
private static String user = "root";
private static String password = "1311664842";
private static Connection con = null;
// 1.加载驱动程序
Class.forName("com.mysql.jdbc.Driver");
//Class.forName("oracle.jdbc.driver.OracleDriver");
// 2.与数据库进行连接
con = DriverManager.getConnection(url, user, password);
// 3.创建Statement对象,执行静态的sql语句
Statement state = con.createStatement();
String sql = "select * from imooc_goddess;";
// 执行sql语句
ResultSet rs = state.executeQuery(sql);
while(rs.next()) {
// 列数从1开始
System.out.println("id:" + rs.getInt(1));
System.out.println("name:" + rs.getString(2));
}
// 关闭资源
rs.close();
state.close();
con.close();
上面就是一个简单的完整的连接数据库、查询数据库、返回结果的小代码了。
元数据
元数据是用于描述数据库或数据库一部分的数据,它是关于数据的数据。元数据被用于动态地调节数据库的内容和结果集。分为两类:关于数据库的,关于结果集的。
1.关于数据库的DatabaseMetaData元数据
DatabaseMetaData对象能够提供关于特定数据库的结构信息。通过数据库的连接获得
DatabaseMetaData dmd = con.getMetaData();
DatabaseMetaData提供的方法有很多,通过返回结果的类型可分为4类:字符串、整数、布尔值和ResultSet。
2.关于结果集的ResultSetMetaData元数据
ResultSetMetaData是关于结果集的元数据,可以通过ResultSet的getMeatData方法获得。
ResultSetMetaData rsmd = rs.getMeatData();
关于很多具体的方法就不说了,大家可以查看API文档
批处理
所谓批处理,就是可以一起执行多条SQL更新语句,这样就不要一条一条的执行,可以提高我们的效率。
Statement中的方法能够让我们进行批处理,具体步骤如下:
// 关闭自动提交
con.setAutoCommit(false);
Statement st = con.createStatement();
// 将给定的SQL命令添加到此Statement对象的命令列表中
st.addBatch(insert into....);
st.addBatch(insert into....);
st.addBatch(insert into....);
// 将一批命令提交给数据库执行
st.executeBatch();
con.commit();
// 开启自动提交
con.setAutoCommit(true);