JDBC的配置和操作

title: JDBC
date: 2023-05-08 22:11:36
tags: [数据库] 
categories: [数据库]
comments: true

  个人Blog:链接地址

JDBC

JDBC知识

  • JDBC的CRUD

  • JDBC的主要API

  • (Druid)德鲁伊数据库连接池

JDBC

JDBC的概念

使用Java语言操作关系型数据库的一套API(接口),而接口的实现类就是数据库驱动jar包

Java操作数据库

第一步:编写Java代码

//1.注册驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
​
    //2.获取连接
    String url = "jdbc:mysql://127.0.0.1:3306/db04?useSSL=false";
​
    String username = "root";
​
    String password = "1234";
​
    Connection connection = DriverManager.getConnection(url, username, password);
​
    //3.创建sql语句
    String sql = "update account set money=200 where id=1";
​
    //4.获取执行sql的对象statement
    Statement stmt = connection.createStatement();
​
    //5.执行sql语句
    int count = stmt.executeUpdate(sql);//受影响的行数
​
    //6.输出结果
    System.out.println(count);
​
    //7.释放资源
    stmt.close();
    connection.close();

第二步:Java代码将SQL发送到MySQL服务端

第三步:MySQL服务端接收到SQL语句并执行该SQL语句

第四步:将SQL语句执行的结果返回给Java代码

JDBC API

DriverManager

DriverManager(驱动管理类)作用:

  • 注册驱动

  • 获取数据库连接

Connection

Connection(数据库连接对象)作用:

  • 获取执行 SQL 的对象

  • 管理事务

开启事务 : BEGIN; 或者 START TRANSACTION; 提交事务 : COMMIT; 回滚事务 : ROLLBACK;

Statement

Statement对象的作用就是用来执行SQL语句

ResultSet

ResultSet(结果集对象)

PreparedStatement
PreparedStatement作用: 预编译SQL语句并执行:预防SQL注入问题

String sql = "select * from tb_user where username=? and password= ?"; System.out.println(sql); //创建sql执行对象 PreparedStatement preparedStatement = connection.prepareStatement(sql); //配置参数 preparedStatement.setString(1,name); preparedStatement.setString(2,pwd);

数据库连接池 Druid

配置druid.properties

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useSSL=false&useServerPrepStmts=true
username=root
password=1234

初始化连接数量

 initialSize=5

最大连接数

 maxActive=10

最大等待时间

 maxWait=3000

获取配置

//1.导入jar包
//2.定义配置文件
//3. 加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("src/druid.properties"));
//4. 获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//5. 获取数据库连接 Connection
Connection connection = dataSource.getConnection();
//System.out.println(System.getProperty("user.dir"));

JDBC的CRUD

增加
// 接收页面提交的参数
String brandName = "香飘飘";
String companyName = "香飘飘";
int ordered = 1;
String description = "绕地球一圈";
int status = 1;
​
//定义执行sql语句
String sql = "insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);";
​
//获取执行对象,并预编译
PreparedStatement pstmt = conn.prepareStatement(sql);
​
//配置参数
​
//4. 设置参数
pstmt.setString(1,brandName);
pstmt.setString(2,companyName);
pstmt.setInt(3,ordered);
pstmt.setString(4,description);
pstmt.setInt(5,status);
​
//执行sql语句
int i = pstmt.executeUpdate();
​
//输出结果
System.out.println(i>0);
删除
// 接收页面提交的参数
    int id=4;
​
//定义执行sql语句
 String sql = "delete from tb_brand where id=?";
 
//获取执行对象,并预编译
  PreparedStatement pstmt = conn.prepareStatement(sql);
​
//配置参数
​
//4. 设置参数
  pstmt.setInt(1,id);
​
//执行sql语句
int i = pstmt.executeUpdate();
 
//输出结果
  System.out.println(i>0);
  pstmt.close();
  conn.close();
修改
// 接收页面提交的参数
String brandName = "香飘飘";
String companyName = "香飘飘";
int ordered = 1000;
String description = "绕地球三圈";
int status = 1;
int id=4;
​
//定义执行sql语句
String sql = " update tb_brand\n" +
" set brand_name  = ?,\n" +
" company_name= ?,\n" +
" ordered = ?,\n" +
" description = ?,\n" +
" status  = ?\n" +
" where id = ?";
//获取执行对象,并预编译
PreparedStatement pstmt = conn.prepareStatement(sql);
​
//配置参数
​
//4. 设置参数
pstmt.setString(1,brandName);
pstmt.setString(2,companyName);
pstmt.setInt(3,ordered);
pstmt.setString(4,description);
pstmt.setInt(5,status);
pstmt.setInt(6,id);
​
//执行sql语句
int i = pstmt.executeUpdate();
​
//输出结果
System.out.println(i>0);
pstmt.close();
conn.close();
查找
 //定义执行sql语句
    String sql = "SELECT * FROM tb_brand;";
    //获取执行对象,并预编译
    PreparedStatement preparedStatement = conn.prepareStatement(sql);
    //配置参数
​
    //执行sql语句,获取结果集
    ResultSet rs = preparedStatement.executeQuery();
​
    //6. 处理结果 List<Brand> 封装Brand对象,装载List集合
    ArrayList<Brand> arrayList = new ArrayList<>();
    Brand brand;
    while (rs.next()) {//判断是否有数据,光标下移数据库
        //获取数据
        int id = rs.getInt("id");
        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);
​
        //装载集合
        arrayList.add(brand);
        preparedStatement.close();
        conn.close();

  • 14
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值