目录
01-JDBC简介-快速入门 使用Java语言操作关系型数据库的一套API
02-JDBC-API详解-DriverManager
03-JDBC-API详解-Connection
04-JDBC-API详解-Statement编辑05-JDBC-API详解-ResultSet编辑编辑编辑编辑
06-JDBC-API详解-PreparedStatement-SQL注入演示
00-JavaWeb整体介绍

前端工程师负责网页 Java工程师负责JavaWeb程序和数据库搭建
01-JDBC简介-快速入门 使用Java语言操作关系型数据库的一套API



package com.itheima.jdbc;
import com.sun.jdi.ClassNotLoadedException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
//JDBC快速入门
public class JDBCDemo {
public static void main(String[] args) throws Exception {
//1.注册驱动 MySQL5 之后的驱动包 可以不写这行
Class.forName("com.mysql.jdbc.Driver");
//2.获取链接
String url="jdbc:mysql://127.0.0.1:3306/db1";
String username="root";
String password="1234";
Connection conn=DriverManager.getConnection( url,username ,password);
//3.定义sql
String sql="update account set money=2000 where id= 1";
//4.获取执行sql的 对象statement
Statement stmt =conn.createStatement();
//5.执行sql
int count=stmt.executeUpdate(sql); //受影响的 行 数
//6.处理结果
System.out.println(count);
//7.释放资源
stmt.close();
conn.close();
}
}
02-JDBC-API详解-DriverManager(驱动管理类)


03-JDBC-API详解-Connection


04-JDBC-API详解-Statement

05-JDBC-API详解-ResultSet




为啥test rs 运行不来了??? 因为:import org.junit.Test;
06-JDBC-API详解-PreparedStatement-SQL注入演示

import com.itheima.pojo.Account;import org.junit.Test;
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;
/**
* 用户登录
*/
public class JDBCDemo6_UserLogin {
@Test
public void testLogin() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "zhangsan";
String pwd = "fhsjkfhdsk";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
/**
* 演示SQL注入
*/
@Test
public void testLogin_Inject() throws Exception {
//2. 获取连接:如果连接的是本机mysql并且端口是默认的 3306 可以简化书写
String url = "jdbc:mysql:///db1?useSSL=false";
String username = "root";
String password = "1234";
Connection conn = DriverManager.getConnection(url, username, password);
// 接收用户输入 用户名和密码
String name = "hfkjsfhskj";
String pwd = "' or '1' = '1";
String sql = "select * from tb_user where username = '"+name+"' and password = '"+pwd+"'";
System.out.println(sql);
// 获取stmt对象
Statement stmt = conn.createStatement();
// 执行sql
ResultSet rs = stmt.executeQuery(sql);
// 判断登录是否成功
if(rs.next()){
System.out.println("登录成功~");
}else{
System.out.println("登录失败~");
}
//7. 释放资源
rs.close();
stmt.close();
conn.close();
}
}
修改预先定义好的SQL语句
07-JDBC-API详解-PreparedStatement

08-JDBC-API详解-PreparedStatement-原理

09-数据库连接池-简介&DRUID使用


10-JDBC练习-环境准备
alt +鼠标左键: 整列调整
在实体类中,基本数据类型建议使用其对应的包装类型
// 状态:0:禁用 1:启用
private Integer status ;
//因为 int 的默认值为0 所以用integer 对象的默认值为null
11-JDBC练习-查询所有
代码写完了,但是运行不了 我推测是java包没导入成功的事
没错自动导入的Test包是import org.testng.annotations.Test;
Error:(5, 30) java: 程序包org.test ng.annotations不存在
照着视频修改的包是import org.junit.Test;
//查询所有
//1.SQL:select * from tb_brand;
//2.参数 :不需要
//3.结果 :List<Brand>
@Test
public void test( ) throws Exception {
//1.获取connection
//3.加载配置文件
Properties prop =new Properties();
prop.load(new FileInputStream("jdbc-demo/src/druid.properties"));
//4.获取连接对象
DataSource dataSource= DruidDataSourceFactory.createDataSource(prop);
//5.获取数据库连接Connection
Connection conn= dataSource.getConnection();
//2.定义SQL
String sql="select * from tb_brand";
//3.获取pstmt 对象
PreparedStatement pstmt = conn.prepareStatement(sql);
//4.设置参数 无
//5.执行SQL
ResultSet rs=pstmt.executeQuery();
//6.处理结果 List<Brand> 封装Brand对象,装载List集合
Brand brand=null;
List<Brand> brands = new ArrayList<>();
while(rs.next()) {
//获取数据
int id=rs.getInt("id");
String name=rs.getString("brand_name");
String brandName=rs.getString("brand_name");
String companyName=rs.getString("company_name");
int ordered=rs.getInt("ordered");
String description=rs.getString("description");
int status=rs.getInt("status");
//封装Brand对象
brand =new Brand();
brand.setId(id);
brand.setBrandName(brandName);
brand.setCompanyName(companyName);
brand.setOrdered(ordered);
brand.setDescription(description);
brand.setStatus(status);
//装载集合
brands.add(brand);
}
System.out.println(brands);
//7.释放资源
rs.close();
pstmt.close();
conn.close();
}
12-JDBC练习-添加&修改&删除
代码还没写