学习所得来源于b站千峰java学院Gavin老师JDBC教学视频
1、引言
- 以前我们操作数据库都是使用客服端工具访问数据库,需要手工建立连接,输入用户名和密码登录,编写sql语句,点击执行,查看操作结果(结果集或受影响行数)
思考:在实际开发中,会采用客服端操作数据库吗
- 在实际开发中,当用户的数据发生改变时,不可能通过客户端执行操作SQL语句,因为操作量过大,无法保证效率和正确性
2、JDBC
2.1 什么是JDBC
- JDBC(Java DataBase Connectivity Java)java连接数据库,可以使用java语言连接数据库完成CRUD操作
2.2 JDBC核心思想
- 其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。 我们可以使用这套接口(JDBC)编程,真正执行的代 码是驱动
jar包中的实现类
2.3 MYSQL数据库驱动
- mysql-connector-java-5.1xx-bin.jar 适用于5.x版本
- mysql-connector-java-8.1xx-bin.jar 适用于8.x版本
2.3.1环境搭建
- 百度搜索:
mysql connector
或者点击此链接下载:https://dev.mysql.com/downloads/connector/j/
Connector/J
就是为Java
的JDBC
准备的
- .当点击下载上的时候MySQL官网会提醒你注册MySQL账号,不过不用注册一样下载点击
No thanks,just start my download
下载完毕后,解压后,会看见如下图的就是mysql驱动的 jar 包:
接下在的部分在ieda中配置
打开idea,新建java工程,然后新建一个
Directory
文件夹(改名为lib),用于存放jar
文件![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633226846559-74fb41b7-ec3e-431d-81e1-141ad33e02f6.png#clientId=uadee3b02-d2be-4&from=paste&height=389&id=JTqsl&margin=%5Bobject%20Object%5D&name=image.png&originHeight=657&originWidth=858&originalType=binary&ratio=1&size=63098&status=done&style=none&taskId=u704e4b05-2e2b-4659-b705-969196fb664&width=507.9715881347656)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633226881325-046a24bf-47d9-416f-bda6-0e2fc7c5e816.png#clientId=uadee3b02-d2be-4&from=paste&height=247&id=c5Vfu&margin=%5Bobject%20Object%5D&name=image.png&originHeight=592&originWidth=1222&originalType=binary&ratio=1&size=35409&status=done&style=none&taskId=u135d7644-7a0d-4b88-bc6f-bba465ec6dc&width=508.97442626953125)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633227279524-c46c59d6-cb9d-4a0d-b265-659d98b1f93a.png#clientId=uadee3b02-d2be-4&from=paste&height=229&id=Tq8v1&margin=%5Bobject%20Object%5D&name=image.png&originHeight=225&originWidth=501&originalType=binary&ratio=1&size=9856&status=done&style=none&taskId=ue933edeb-7bd9-42e4-9092-a3488184093&width=509.4886169433594)<br />
将mysql驱动文件mysql-connector-java-8.1xx-bin.jar 复制到项目
lib
文件夹中
选中lib文件夹右键
Add as Libraay
,这里我选中的是Project Libraay
,点击ok![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633228102108-827fbe93-424f-4da8-a408-37aff6ccf94a.png#clientId=u86bea956-b9ce-4&from=paste&height=658&id=ud58cbd10&margin=%5Bobject%20Object%5D&name=image.png&originHeight=689&originWidth=496&originalType=binary&ratio=1&size=34432&status=done&style=none&taskId=uc2c349c1-ef8b-45aa-a809-39094a91854&width=473.991455078125)<br /> ![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633228240921-ef568a20-f4bc-4ea0-b492-c16f162edd61.png#clientId=u86bea956-b9ce-4&from=paste&height=301&id=ub5e3a2c0&margin=%5Bobject%20Object%5D&name=image.png&originHeight=411&originWidth=652&originalType=binary&ratio=1&size=19496&status=done&style=none&taskId=u14f0071a-b31f-4684-9b2a-c3900505723&width=477.9942932128906)
这时候就发现
mysql-connector-java-8.0.26.jar
包可以打开了,证明了数据库的驱动jar文件跟我们项目产生了关联![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633229415101-061779ad-6594-4d1d-9dda-7305b87a920e.png#clientId=u86bea956-b9ce-4&from=paste&height=261&id=ub8adf5d9&margin=%5Bobject%20Object%5D&name=image.png&originHeight=305&originWidth=567&originalType=binary&ratio=1&size=16437&status=done&style=none&taskId=u91a48927-c8e9-417b-999f-6a5e4f0df90&width=485.4942932128906)
3、JDBC开发步骤【重点】
3.1 注册驱动
使用 Class.forName("com.mysql.jdbc.Driver");// 加载驱动 手动加载字节码文件到JVM中
此路径
com.mysql.jdbc.Driver
可在idea中查看![image.png](https://cdn.nlark.com/yuque/0/2021/png/12410138/1633229826657-0bcf737a-dda3-4b8f-a0f0-bb00163ef30c.png#clientId=u86bea956-b9ce-4&from=paste&height=307&id=MqHpQ&margin=%5Bobject%20Object%5D&name=image.png&originHeight=389&originWidth=633&originalType=binary&ratio=1&size=19707&status=done&style=none&taskId=u19d358b0-a2d7-4f17-9a13-9ee0e7c1508&width=499.491455078125)
3.2 连接数据库
//获取连接对象
// DriverManager.getConnection(url,user,password);
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_table", "root", "123456");
url:一般是都协议、IP、端口、SID组成
3.3 获取执行sql语句的对象
//通过Connection对象获得Statement对象,用于对数据库进行通用访问
Statement statement = connection.createStatement();
3.4 执行sql语句并接收结果
int result = statement.executeUpdate("DELETE FROM grade WHERE gradename = \"赵路\"");// 执行sql语句并接收结果
温馨提示:
- 在编写DML语句时,一定要注意字符串参数的符号是单引号
**'值'**
- DML语句:增删改时,返回受影响行数(int 类型)
- DQL语句:查询时,返回结果数据(ResultSet 结果集)
3.5 处理结果
if(result == 1){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
3.6 释放资源
// 先开后关原则,释放所使用到的资源对象
statement.close();
connection.close();
题目
1、实现向数据库表中插入一条数据
public class TestJDBC {
public static void main(String[] args) throws Exception {
//1、注册驱动 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、获得连接
String url ="jdbc:mysql://localhost:3306/t_table";
String user = "root";
String password = "123456";
Connection connection = DriverManager.getConnection(url,user,password);
if(connection != null){
System.out.println("连接到数据库");
}else {
System.out.println("连接失败");
}
// 3、获得执行sql语句的对象
Statement statement = connection.createStatement();
// 4、编写sql语句,执行sql语句
String sql = "insert into `grade` VALUES (28,'肖战')";
int result = statement.executeUpdate(sql);//DML操作调用方法
// 5、处理接受结果
if(result == 1){
System.out.println("成功");
}else {
System.out.println("失败");
}
//6、释放资源,先开后关
statement.close();
connection.close();
}
}
2、实现向数据库表中删除一条数据
public class DeleteJDBC {
public static void main(String[] args) throws Exception{
// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、获得连接对象
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/t_table", "root", "123456");
//3、获得执行sql的对象
Statement statement = connection.createStatement();
//4、执行sql语句,并接收结果
int result = statement.executeUpdate("DELETE FROM grade WHERE gradename = \"赵路\"");
// 5、处理结果
if(result == 1){
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
// 6、释放资源
statement.close();
connection.close();
}
}
4、ResultSet(结果集)
- 在执行查询sql后,存放查询到的数据
4.1 接收结果集
ResultSet rs = statement.executeQuery(sql);
ResultSet rs = statement.executeQuery("select *from grade");