JDBC基础
学习目标
- 能够说出什么是JDBC
- 能够说出JDBC连接数据库的四个参数。
1 | Class.forName(“com.mysql.jdbc.Driver”); |
- 能够说出JDBC的核心API
1 | DriverManager: 1) 加载驱动;2)获取数据库连接; |
- 能够运用Statement执行SQL操作
- 能够运用PreparedStatement执行SQL操作
- 第一步:获取数据库连接;
- 第二步:创建PreparedStatement对象;
PreparedStatement pstmt = conn.prearedStatement(sql); - 第三步:如果有参数,就要设置参数;
- 第四步:调用该对象executeQuery或executeUpdate方法;
- 第五步:遍历结果;
- 第六步:释放资源;(ResultSet、Statement、Connection)
- 能够区别Statement与PreparedStatement
1 | PreparedStatement是Statement的子接口; |
一、 JDBC概述
JDBC(Java Database Connectivity):java数据库连接技术。它的作用就是通过java代码访问和操作数据库。
JDBC是一个接口规范。它定义了一些访问数据库的规则。具体数据库的实现是由各个数据库厂商负责实现。
不同的数据库厂商都必须要提供自己的驱动程序。其实,该驱动程序就是实现了JDBC规范的程序。
二、JDBC的使用
2.1 JDBC的核心API
- DriverManger: 数据库的驱动管理类。作用:1)加载驱动;2)获取数据库的连接;
- Conection:代表一个数据库连接。访问数据库之前必须要先获取Connction对象;
- Statement:代表一个SQL语句,它负责把SQL的命令发送MySQL服务器执行;
- ResultSet:代表一个结果集对象,该对象封装了所有查询结果;
2.2 JDBC连接MySQL数据库
- 第一步:加载驱动(mysql-connector-java-5.1.13-bin.jar);
- 第二步:获取数据库连接;
MySQL:jdbc:mysql://localhost:3306/itheima
Oracle:jdbc:oracle:thin:localhost:1521:orcl
格式:jdbc:数据库名:其他
jdbc: 固定的
数据库名:例如:mysql
其他:不同数据库的写法会不一样; - 第三步:创建Statement对象;
- 第四步:调用Statement对象一些方法;
execute(): 可以执行查询或更新操作;
executeQuery(): 执行查询;
executeUpdate(): 执行更新; - 第五步:遍历结果结果集(执行查询才有结果集);
ResultSet常用的方法:
- next():把游标向下移动一行,如果该行有数据,则返回true,否则返回false;
- previous():把游标向上移动一行,如果该行有数据,则返回true,否则返回false;
- first():把游标移动到第一行,如果该行有数据,则返回true,否则返回false;
- last():把游标移动到最后一行,如果该行有数据,则返回true,否则返回false;
- getXxx(int columnIndex):根据字段的索引获取字段内容;
- getXxx(String columnName):根据字段名或字段别名获取字段内容;
- 第六步:关闭资源;
==注意==:关闭资源的时候,要先开后关,后开先关。
1 | public class Demo { |
2.3 JDBC的增删查该操作
2.2.1 添加
1 | //添加 |
2.2.2 删除
1 | //删除 |
2.2.4 查询
1 | //查询 |
三、 SQL注入
所谓的SQL注入,就是用户把SQL命令通过web表单提交到服务器,服务器把SQL命令与已有SQL命令一起被执行,从而达到欺骗数据库服务器的目的。
解决办法:
- 使用js验证,规定用户输入的内容不能够出现特殊的字符;
- 不能够把用户输入的内容直接放在SQL语句一起执行;
四、预编译对象
PreparedStatement其实就是Statement的一个子接口。它的主要作用:
- 防止SQL注入;
- 提高程序的可读性和可维护性;
- 提高程序的执行效率;
PreparedStatement提供一个预编译的功能。但是从MySQL4.1之后默认预编译的功能是关闭的。如果要启用预编译的功能,就需要在URL的后面田间两个参数:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 一叶秋枫!
评论