JDBC学习笔记 | 来自缤纷多彩的灰

JDBC学习笔记 @ WHlcj | 2022-08-09T15:33:07+08:00 | 5 分钟阅读 | 更新于 2023-09-09T14:25:58+08:00

以及IDEA常用快捷键汇总

零、IDEA常用快捷键

快速生成语句

1
2
main(): psvm+回车
输出语句: sout+回车

内容辅助键

1
2
3
4
5
6
7
8
内容提示与代码补全: Ctrl+Alt+space
左补全: Ctrl+Alt+v
包裹代码: Ctrl+alt+t
单行注释: Ctrl+/
多行注释: Ctrl+Shift+/
规整代码: Ctrl+Alt+L
统一替换: Ctrl+r
整列编辑: Alt+鼠标左键

一、基础部分

1.基础概念:

(1)JCDB(Java DataBase Connectivity):使用Java语言操作关系型数据库的一套API。是官方定义的一套操作所有关系型数据库的规则, 即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
(2)127.0.0.1是回送地址,指本地机,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address), 即主机IP堆栈内部的IP地址,主要用于网络软件测试以及本地机进程间通信,无论什么程序,一旦使用回送地址发送数据, 协议软件立即返回,不进行任何网络传输。
(3)查询本地ip地址: cmd命令窗口输入:ipconfig ,IPv4就是本机ip地址
(4)文件夹中: shift+右键启动Powershell窗口
(5)查看当前代码针对的路径: System.out.println(System.getProperty(“user.dir”));

2.快速入门:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
(1)创建工程,导入驱动jar包
(2)注册驱动: Class.forName(“com.mysql.cj.jdbc.Driver”);	(MySQL5之后的驱动jar包可以省略这一步骤)
(3)获取连接: Connection conn = DriverManager.getConnection(url,username,password);
(4)定义SQL语句: String sql = “update...”;
(5)获取执行SQL对象: Statement stmt = conn.createStatement();
(6)执行: SQL:stmt.executeUpdate(sql);
(7)返回处理结果
(8)释放资源: 
      ①stmt.close();
      ②conn.close();

二、API详解:

1.DriverManager

1
2
3
4
5
(1)注册驱动  
(2)获取连接  
    ①参数键值对:Url:jdbc:mysql://ip地址:端口号/数据库名称?参数键值对1&参数键值对2...  
    ②细节:如果是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:	Jdbc:mysql///数据库名称?  
(3)参数键值对

2.Connection

1
2
3
4
5
6
7
8
(1)获取执行SQL对象
    ①普通执行SQL对象:  Statement  createStatement()
    ②预编译SQL的执行SQL对象防止SQL注入:  
PreparedStatement  prepareStatement(sql)
(2)事务管理
    ①开启事务:  setAutoCommit(boolean autoCommit):  true为自动提交事务;false为手动提交事务,即开启事务
    ②提交事务:  commit()
    ③回滚事务:  rollback()

3.Statement

1
2
3
(1)执行SQL语句
    ①执行DML、DDL语句: int  executeUpdate(sql)
    ②执行DQL语句: ResultSet  excuteQuery(sql)

4.ResultSet

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
(1)封装了DQL查询语句的结果:  ResultSet stmt.executeQuery(sql):  执行DQL语句,返回ResultSet对象
(2)获取查询结果:  
    ①Boolean  next()
      1)将光标从当前位置向前移动一行
      2)判断当前行是否为有效行: 返回true为有效行有数据。返回false无效行无数据
    ②getxxx(参数):获取数据
      1)getInt(参数):
      2)SgetString(参数)
    ③参数
      1)Int: 列的编号,从1开始
      2)String: 列的名称
    ④使用:  数据类型 标识符 = rs.getxxx(参数);

5.PreparedStatement(默认关闭)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
(1)作用:
    ①预编译SQL语句并执行,性能更高——只检查和编译一次SQL。
    ②预防SQL注入问题——将敏感字符进行转义
(2)SQL注入: 通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法
(3)获取PreparedStatement对象
    ①SQL语句中的参数值用?占位符替代: String sql = “select * from user where username = ? and password = ?”
    ②通过Connection对象获取,并传入对应的sql语句:PreparedStatement pstmt = conn.prepareStatement(sql);
    ③设置参数值:	PrepareStatement对象: setXXX(参数1,参数2):给?赋值
    ④参数: 
      1)参数1: ?的位置编号,从1开始
      2)参数2: ?的值
    ⑤执行SQL: executeUpdate();/excuteQuery();——不需要再传递sql

三、数据库连接池

1.简介:

数据库连接池是一个容器,负责分配,管理数据库连接。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏

2.好处:

1
2
3
(1)资源重用
(2)提升系统响应速度
(3)避免数据库连接遗漏

3.实现:

1
2
3
4
5
6
(1)标准接口: DataSource
    ①获取连接:  Connection getConnection()
(2)常见的数据库连接池:
    ①DBCP
    ②C3P0
    ③Druid:阿里巴巴开源的数据库连接池项目。功能强大,性能优秀,是Java语言最好的数据库连接池之一

4.Driud使用步骤

1
2
3
4
5
(1)导入jar包
(2)定义配置文件
(3)加载配置文件
(4)获取数据库连接池对象
(5)获取连接

5.注意

1
2
3
4
5
6
(1)Java的int类型有默认值为0,需注意使用integer类型(默认值为null);
(2)实际操作思路:
    ①查询:查询所有数据
    ②添加:添加数据
    ③修改:根据id修改
    ④删除:根据id删除