1,JDBC是什么?
Java DataBase Connectivity(JAVA语言连接数据库)
2,JDBC的本质------接口
3,快速上手JDBC
第一步:创建工程,导入驱动JAR包
第二步:连接mysql
第三步:创建类,开始写代码
package com.testjdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcDemo {
public static void main(String[] args) throws Exception{
//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取连接
String url ="jdbc:mysql://192.168.136.132:3306/mydb";
String username ="root";
String password ="1234";
Connection conn = DriverManager.getConnection(url, username, password);
//3.定义sql
String sql="UPDATE student set age=30 where name='张三'";
//4:获取执行sql的对象Statement
Statement stmt= conn.createStatement();
//5:执行sql,count是返回的参数
int count = stmt.executeUpdate(sql);
//6:处理结果
System.out.println(count);
//7:释放资源
stmt.close();
conn.close();
}
}
4,API详解
4.1 DriverManager--------注册驱动,获取连接
4.2 Connection--------获取SQL对象,事务管理
try {
//开启事务
conn.setAutoCommit(false);
//执行sqL
int count1= stmt.executeUpdate(sql1);//受影响的行数
//处理结果
System.out.println(count1);
//执行sql
int count2 =stmt.executeUpdate(sql2);//受影响的行数
//处理结果
System.out.println(count2);
// 提交事务
conn.commit();
catch(Exception throwables){
// 回滚事务
connprollback();
throwables.printStackTrace();
}
}
4.3 Statement-------执行SQL语句
4.4 ResultSet---------查询结果的返回
使用游标进行遍历数据
将查询到的数据封装成对象并存入list集合当中以传给前端
4.5 PreparedStatement---------防止SQL注入
① 首先要知道什么叫SQL注入,非常好玩的东西---原理就是通过输入的密码把后端查询的数据库语句的意思给改了
②在后端查看到的SQL语句:这样返回的结果一定是正确的
③PreparedStatement是如何解决SQL注入问题的呢
④PreparedStatement原理------预编译
5,数据库连接池-------Druid
连接池快速入门:
第一步:导入JAR包
第二步:写配置文件----druid.properties
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true
username=root
password=1234
# 初始化连接数量
initialSize=5
# 最大连接数
maxActive=10
# 最大等待时间
maxWait=3000
第三步:加载配置文件并且获取连接
//加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
//获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop)
//获取数据库连接 Connection
Connection connection=dataSource.getconnection();
System.out.println(connection);