前言
在使用java的过程中我们避免不了对数据库的访问,也就是增删改查(curd)
一、什么是JDBC?
百度解释:JDBC的全称是Java数据库连接(Java Database connect),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系数据库,并使用SQL语句来完成对数据库中数据的查询、更新和删除等操作。
JDBC是Java规定的一套接口(API),由各个数据库厂商负责实现,避免了换数据库驱动导致的不同操作带来的麻烦。
二、使用步骤
1.下载jdbc驱动
有以下两种方式
1)下载jar包
网址如下MySQL :: Download Connector/Jhttps://dev.mysql.com/downloads/connector/j/5.1.html 下载后进行如下操作,方可使用
2)maven 导入
建maven工程后在pom.xml下加入以下语句导入依赖
<dependencies>
<!-- 添加MySQL驱动器的依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.21</version>
</dependency>
</dependencies>
然后刷新让maven下载就行(注意maven下载地址,可以看我的另外一篇文章)
2.开始写代码
jdbc的操作一遍有6步:
1.引入驱动
2.获取连接
3.获取数据库操作对象
4.数据库操作
5.处理结果集
6.释放资源
下面开始详细讲解,继续代码可目录跳到后面
1)注册驱动及获取连接
1、原始方法
Driver driver= new Driver();
String url="jdbc:mysql://localhost:3306/****?serverTimezone=UTC";
Properties properties=new Properties();
properties.setProperty("user","root");
properties.setProperty("password","*****");
DriverManager.registerDriver(driver);
Connection connect = DriverManager.getConnection(url, properties);
非常原始(?后面的是指定时区,不然可能出现问题)
2、反射机制注册驱动(最常用的注册驱动方法)
Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/yb12211?serverTimezone=UTC";
Connection connection= DriverManager.getConnection(url,"root","556712555");
大家可以看到是直接使用DriverManager()少了Driver()的注册,这是因为Driver类中有以下静态代码块,反射加载类的时候执行
实际上,一定版本以上JDBC Class.forName()句也可以省略,因为jar包内已有
2)获取操作对象以及操作数据库
Statement statement = connect.createStatement();
获取操作对象 statement 但需要注意的是statement存在sql注入的问题,所以一般使用prepareStatement
解决sql注入
String sql="select * from ... where ...=? and ...=?"
PreparedStatemment prepareStatemment= connection.prepareStatemment(sql);
prepareStatemment.setString(para_index,str);
ResultSet resultSet = statement.executeQuery();
Connection connection=DriverManager.getConnection(url,"root","***");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from class");
while (resultSet.next()) {
int class_id = resultSet.getInt("class_id");//也可以getInt(1)代表第一列
String class_name = resultSet.getString("class_name");
System.out.println(class_name+class_id);
}
3)回收资源
connection.close();
resultSet.close();
statement.close();
connection.close();
总结
以上就是我对jdbc的一些拙见,如有错误,请大家斧正,本人还写了进阶版的jdbc博客欢迎大家观看。
样例代码
public void connect03() throws SQLException, ClassNotFoundException {
//Class.forName("com.mysql.cj.jdbc.Driver");
String url="jdbc:mysql://localhost:3306/*****?serverTimezone=UTC";
Connection connection= DriverManager.getConnection(url,"root","****");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from class");
while (resultSet.next()) {
int class_id = resultSet.getInt("class_id");
String class_name = resultSet.getString("class_name");
System.out.println(class_name +" "+ class_id);
}
}