主要作用:
注册驱动 实际开发中使用Class.forName("com.mysql,jdbc.Drive");这种方式,因为之前的方式会导致注册两次驱动
获得连接 Connection getConnection(String url,String username,String password)
url写法:jdbc:mysql://localhost:3306/jdbctest
jdbc 协议
mysql 子协议
localhost 主机名
3306 端口号
jdbctest 数据库名
如果连接的是本机,可以简写为jdbc:mysql:///jbdctest
Connection 连接对象
主要作用:
创建用来执行SQL语句的对象
Statement createStatement() 执行SQL语句,有SQL注入漏洞威胁
PrepareStatement prepareStatement(String sql) 预编译SQL语句,解决SQL注入
CallableStatement prepareCall(String sql) 执行SQL中的存储过程
事务的管理
setAutoCommit(boolean autoCommit) 设置事务是否自动提交
commit() 事务提交
rollback() 事务回滚
Statement 执行SQL
主要作用:
执行SQL语句
boolean execute(String sql) 执行SQL,执行查询语句返回true,否则返回false
ResultSet execute(String sql) 执行SQL中的查询语句
int executeUpdate(String sql) 执行SQL中的插入、更新、删除语句
执行批处理操作
addBatch(String sql) 添加到批处理
executeBatch() 执行批处理
clearBatch() 清空批处理
ResultSet 结果集
主要作用:
获取查询到的结果
next() 判断是否存在下一条记录
针对不同类型的数据可以使用getXXX()获取数据
getObject() 通用获取数据,可以获取任何类型的数据
JDBC的SQL注入漏洞问题
package com.kernel.test;
import org.junit.Test;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
/**
* 演示JDBC注入漏洞
*/
public class JDBCDemo04 {
@Test
/**
* 测试SQL注入
*/
public void demo1() {
//boolean result = login("aaa", "11");
//boolean result = login("aaa' or '1=1", "5454545");
boolean result = login("aaa' -- ", "sjjkhnjkhnk");
System.out.println(result);
}
public boolean