1.JDBC是什么?
简而言之,就是一个用来连接数据库的工具。JDBC是SUN公司实现的一套接口,通过这个接口,我们可以访问任何一种数据库,而不用每访问一个数据库就实现该数据库的代码,那样太麻烦,也太乱了。
JDBC是由SUN公司定义的,那么我们连哪个数据库它是不知道的,需要我们自己指定,也就是说我们这边准备好了,剩下的该交给数据库方来做,于是,我们只要引入一个实现了驱动的jar包,就可以通过操纵jdbc完成对数据库的各项操作。
开发准备:先去mysql官网下载一个jdbc驱动。(会maven的就不用了,直接导入下面的依赖就行)
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.25</version>
</dependency>
2. JDBC六个步骤
注册驱动
驱动是需要注册的,也就是告诉驱动一声,我们要用它了。这里有几种实现方式
第一种:通过DriverManager的注册方法。
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
不需要返回值,简单明了。
第二种:学过反射的,可以直接通过反射。
Class.forName("com.mysql.jdbc.Driver");
好了驱动注册完了,接下来,我们知道要用谁家的数据库了,那就要用账号密码去登陆一下,也就是去建立连接。
建立连接
我们要用到刚才的Driver Manager,毕竟是一个驱动管理类。通过它的建立连接方法
Connection conn = DriverManager.getConnection(url, username, password);
因为会返回一个Connection类型的对象,也就是连接对象。其中要填3个参数:url、username、password
可以通过自定义字符串的方式。
String url = "jdbc:mysql://localhost:3306/ssm(这里跟上你的数据库名字就好了。只能操纵一个数据库)
String username = "root";
String password = "123";
解释一下url的内容:
jdbc:mysql是固定格式,也就是jdbc连接的是mysql数据库
localhost 是本机地址,连接自己电脑上的mysql服务器。
3306是端口号,mysql默认端口号。
ssm 这里是我的其中一个数据库名。因为mysql里可以有很多数据库,每个库里可以有很多表。
(mysql好比一个大工厂,里面有好多厂房,你要具体选择一个厂房进去。)
也有其他的获取数据的方式:比如使用资源绑定器
(先创建一个 jdbc.properties文件)
url=jdbc:mysql://localhost:3306/ssm
user=root
password=123
然后使用资源绑定器绑定属性配置文件
ResourceBundle jdbc = ResourceBundle.getBundle("jdbc");
String url = jdbc.getString("url");
String user= jdbc.getString("user");
String password = jdbc.getString("password");
既然建立上了连接,下一步就是获得这个具体的数据操作对象
获取数据库操作对象
Statement stm = conn.createStatement();
通过Statement的成员方法来执行sql语句。查询类的还要拿一个类型来接收一下。
执行sql语句
ResultSet rs = stm.executeQuery("select * from student");
处理查询结果集
只有上面的sql语句是查询的时候,才用得到这一步,但数据库最常使用的就是查询了,不是吗?
while (rs.next()) {
System.out.println("Name :" + rs.getString("name"));
}
rs.getString("这里填数据库中的表的列名。想要什么结果,就填什么列名");
什么都做完了,当然要释放资源了。一直开着那可不就浪费,还会出不知名的错误。
释放资源
一定要按照从小到大的顺序关闭,rs是stm创造的,stm是conn创造的。有可能出异常,我建议整个jdbc写在try catch语句中。
rs.close();
stm.close();
conn.close();
3. 示例:
package com.bjpowernode.JDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ResourceBundle;
public class Example02 {
public static void main(String[] args) {
Connection conn = null;
Statement stm = null;
ResultSet rs = null;
//获取参数
ResourceBundle jdbc = ResourceBundle.getBundle("jdbc");
String url = jdbc.getString("url");
String user = jdbc.getString("user");
String passwd = jdbc.getString("password");
try {
//注册驱动
Class.forName("com.mysql.jdbc.Driver");
//建立连接
conn = DriverManager.getConnection(url, user, passwd);
//创建数据库操作对象
stm = conn.createStatement();
//sql语句
String sql = "select * from student";
rs = stm.executeQuery(sql);
//处理查询结果集
while (rs.next()) {
System.out.println("name : " + rs.getString("name"));
System.out.println("email : " + rs.getString("email"));
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (stm != null) {
try {
stm.close();
} catch (Exception e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
}