JDBC
Java DataBase Connectivity: Java数据库连接
学习JDBC主要学习的就是如何在Java代码中执行SQL
语句
JDBC是Sun公司提供的一套Java语言和数据库进行连
接的API(Application Programma Interface 应用程
序编程接口)
为什么使用JDBC?
如果没有JDBC接口,Java程序员每一种数据库都要学
习一套对应的方法,Sun公司为了避免这种情况出现,定
义出了JDBC接口,各个数据库厂商根据此接口去写各
自的实现类, 这样Java程序员只需要学习JDBC接口中
的一套方法就可以访问任何数据库,从而提高了开发效
率, 遵循JDBC规则的代码就算将来换数据库代码都不
需要改变.
JDBC接口及数据库厂商实现
DriverManager:驱动管理
Connection和DatabaseMetaData:连接接口
Statement和PreparedStatement和CallableStatement
语句对象
ResultSet和ResultSetMetaData:结果集接口
JDBC工作过程
1.加载驱动,建立连接
2.创建语句对象
3.执行SQL语句
4.处理结果集
5.关闭连接
如何使用JDBC
- 创建maven工程
- 把MySQL相关依赖
- 创建Demo01.java 写如下代码:
注册驱动: 告诉编译器使用的是哪个数据库 Class.forName("com.mysql.cj.jdbc.Driv er");
// 2. 获取数据库连接
// url:连接数据库的路径 user:用户 名 password:密码
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/newdb3? characterEncoding=utf8&useSSL=false&se rverTimezone=Asia/Shanghai&rewriteBatc hedStatements=true", "root","root");
System.out.println(conn);
// 3. 创建执行SQL语句对象 Statement s = conn.createStatement();
// 4. 执行SQL语句 String sql = "create table jdbct1(id int,name varchar(10));"; s.execute(sql);//执行
// 5. 关闭资源 conn.close();
Statement(用于执行SQL语句)
● execute(sql); 此方法可以执行任意SQL语句,但是建议执行DDL(数据定义语言,也就是数据库相关SQL 和表相关SQL)
● executeUpdate(sql); 此方法用于执行增删改相关的SQL语句
● executeQuery(sql); 此方法专门用于执行查询相关的SQL语句
Statement(用于执行SQL语句)
execute(sql):此方法可以执行任意SQL语句,但是建
议执行DDL(数据定义语言,也就是数据库相关SQL 和
表相关SQL)
executeUpdate(sql); 此方法用于执行增删改相关的
SQL语句
executeQuery(sql); 此方法专门用于执行查询相关的
SQL语句
ResultSet接口
执行查询SQL语句后返回的结果集,由ResultSet接口接收,常用于:遍历/判断是否有结果(登录)
ResultSet:对象是初始位置在首行
ResultSet.next()方法用来在行间移动
ResultSet.getXXX()方法用来取得字段内容
什么是SQL注入漏洞
通过控制传递给程序数据库操作语句的关键变量来获得恶意控制程序数据库,从而获取有用信息或者制造恶意破坏的,甚至是控制用户计算机系统的漏洞,就称之为“SQL注入漏洞”。
数据库连接池DBCP
DataBaseConnectionPool
作用: 将连接重用,避免了频繁开关连接,从而提高了执
行效率
PreparedStatement预编译SQL执行对象
由于预编译的SQL执行对象提前将SQL语句的逻辑部
分编译锁死,用户输入的内容不会对原有逻辑造成改
动,从而解决了SQL注入的问题
如果SQL语句中有变量时使用PreparedStatement,
没有变量则使用Statement