一、JDBC简介
1.什么是JDBC:
1)JDBC(Java DataBase Connectivity)java 数据库连接;
2)是 JavaEE 平台下的技术规范;
3)定义了在 Java 语言中连接数据,执行 SQL 语句的标准;
4)可以为多种关系数据库提供统一访问;
2.什么是数据库驱动程序:
1)数据库厂商对 JDBC 规范的具体实现
2)不同数据产品的数据库驱动名字有差异
3)在程序中需要依赖数据库驱动来完成对数据库的操作
3.程序操作数据库流程:
二、JDBC中常用接口与类
1.Driver 接口:
Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力。在程序中要连接数据库,必须先通过 JDK 的反射机制加载数据库驱动类,将其实例化。不同的数据库驱动类的类名有区别。
加载MySql驱动:Class.forName("com.mysql.jdbc.Driver");
加载 Oracle 驱动:Class.forName("oracle.jdbc.driver.OracleDriver");
2.DriverManager 类:
DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连接。并返回 Connection 接口类型的数据库连接对象。
常用方法:
getConnection(String jdbcUrl, String user, String password);
该方法通过访问数据库的 url、用户以及密码,返回对应的数据库的 Connection 对象。
3.Connection 接口:
Connection 与数据库的连接(会话)对象。我们可以通过该对象执行 sql 语句并返回结果。
连接 MySql 数据库:
Connection conn = DriverManager.getConnection("jdbc:mysql://host:port/database","user","password");
连接 Oracle 数据库:
Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@host:port:database","user", "password");
连接 SqlServer 数据库:
Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://host:port;DatabaseName=database", "user", "password");
(1)常用方法:
1)createStatement():创建向数据库发送 sql 的 Statement 接口类型的对象。
2)preparedStatement(sql) :创建向数据库发送预编译 sql 的 PrepareSatement 接口类型的对象。
3)prepareCall(sql):创建执行存储过程的 CallableStatement 接口类型的对象。
4)setAutoCommit(boolean autoCommit):设置事务是否自动提交。
5)commit() :在链接上提交事务。
6)rollback() :在此链接上回滚事务。
4.Statement 接口:
用于执行静态 SQL 语句并返回它所生成结果的对象。由 createStatement 创建,用于发送简单的 SQL 语句(不支持动态绑定)。
(1)常用方法:
1)execute(String sql):执行参数中的 SQL,返回是否有结果集。
2)executeQuery(String sql):运行 select 语句,返回 ResultSet 结果集。
3)executeUpdate(String sql):运行 insert/update/delete 操作,返回更新的行数。
4)addBatch(String sql) :把多条 sql 语句放到一个批处理中。
5)executeBatch():向数据库发送一批 sql 语句执行。
5.PreparedStatement 接口:
继承自 Statement 接口,由 preparedStatement 创建,用于发送含有一个或多个参数的 SQL 语句。
优点:执行效率高、代码可读性强、安全性高。
(1)常用方法:
1)addBatch()把当前 sql 语句加入到一个批处理中。
2)execute() 执行当前 SQL,返回个 boolean 值;
3)executeUpdate()运行 insert/update/delete 操作,返回更新的行数。
4)executeQuery() 执行当前的查询,返回一个结果集对象;
5)setDate(int parameterIndex, Date x)向当前SQL语句中的指定位置绑定一个java.sql.Date值。
6)setDouble(int parameterIndex, double x)向当前 SQL 语句中的指定位置绑定一个 double值。
7)setFloat(int parameterIndex, float x)向当前 SQL 语句中的指定位置绑定一个 float 值。
8)setInt(int parameterIndex, int x)向当前 SQL 语句中的指定位置绑定一个 int 值;
9)setString(int parameterIndex, String x)向当前 SQL 语句中的指定位置绑定一个 String 值。
6.ResultSet 接口:
ResultSet 提供检索不同类型字段的方法。
常用方法:
1)getString(int index)、getString(String columnName):获得在数据库里是 varchar、char 等类型的数据对象;
2)getFloat(int index)、getFloat(String columnName):获得在数据库里是 Float 类型的数据对象。
(1)ResultSet 对结果集进行滚动的方法:
1)next():移动到下一行。
2)Previous():移动到前一行。
2)absolute(int row):移动到指定行。
3)beforeFirst():移动 resultSet 的最前面。
4)afterLast() :移动到 resultSet 的最后面。
7.CallableStatement 接口:
继承自 PreparedStatement 接口,由方法 prepareCall 创建,用于调用数据库的存储过程。
三、JDBC的使用
1. JDBC访问数据库步骤:
1)加载一个Driver驱动;
2)创建数据库连接(Connection);
3)创建SQL命令发送器Statement;
4)通过Statement发送SQL命令并得到结果;
5)处理结果(select语句);
6)关闭数据库资源;
2.封装JDBC工具类:
(1)封装工具类:
封装工具类(2)JDBC访问数据库:
操作数据库3.SQL注入问题:
(1)什么是SQL注入?
所谓 SQL 注入,就是通过把含有 SQL 语句片段的参数插入到需要执行的 SQL 语句中,最终达到欺骗数据库服务器执行恶意操作的 SQL 命令。
密码不正确时,仍然可以成功登陆;
4.PreparedStatement 对象的使用:
1)PreparedStatement 接口继承 Statement 接口;
2)PreparedStatement 效率高于 Statement;
3)PreparedStatement 支持动态绑定参数;
4)PreparedStatement 具备 SQL 语句预编译能力;
5)使用 PreparedStatement 可防止出现 SQL 注入问题。
(2)通过 PreparedStatement 对象向表中插入数据使用properties配置文件:
工具类 操作数据
网友评论