当前位置: 首页 > article >正文

jdbc学习

# 快速入门,看的黑马程序员

 package com.itheima.jdbc;
  ​
  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.jdbc.Driver");
  ​
          //2.获取连接
          String url = "jdbc:mysql://127.0.0.1:3306/xiaohaizi";//xiaohaizi是数据库的名字
          String username = "root";
          String password = "****";
          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();
      }
  }

API详解

DriverManager

两个功能:注册驱动、获取数据库的连接

第一行代码Class.forName("com.mysql.jdbc.Driver");可以省略不写

Connection

两个功能:获取执行sql的对象、事务管理

//3.定义sql
  String sql1 = "update account set money = 2000 where id = 1";
  String sql2 = "update account set money = 3000 where id = 2";
  ​
  //4.获取执行sql的对象statement
  Statement stmt = conn.createStatement();
  ​
  try {
      //开启事务
      conn.setAutoCommit(false);
  ​
      //5.执行sql
      int count1 = stmt.executeUpdate(sql1); //受影响的行数
      //6.处理结果
      System.out.println(count1);
      int i = 3/0;
      //5.执行sql
      int count2 = stmt.executeUpdate(sql2); //受影响的行数
      //6.处理结果
      System.out.println(count2);
  ​
      //提交事务
      conn.commit();
  } catch (Exception e) {
      //回滚事务
      conn.rollback();
      throw new RuntimeException(e);
  }

Statement

用来执行sql语句

ResultSet

 package com.itheima.jdbc;
  ​
  import java.sql.*;
  ​
  public class JDBCDemo {
      public static void main(String[] args) throws Exception {
          //1.注册驱动
          Class.forName("com.mysql.jdbc.Driver");
  ​
          //2.获取连接
          String url = "jdbc:mysql://127.0.0.1:3306/xiaohaizi";//xiaohaizi是数据库的名字
          String username = "root";
          String password = "******";
          Connection conn = DriverManager.getConnection(url,username,password);
  ​
          String sql = "select * from account";
  ​
          Statement stmt = conn.createStatement();
  ​
          ResultSet rs = stmt.executeQuery(sql);
  ​
          while(rs.next()){//当前行如果有效就继续执行
              int id = rs.getInt(1);//括号里面是列数,这里的列数从1开始算;或者用列名也可以
              String name = rs.getString(2);
              double money = rs.getDouble(3);
  ​
              System.out.println(id);
              System.out.println(name);
              System.out.println(money);
  ​
              System.out.println("----------------------------------");
          }
          //7.释放资源
          rs.close();
          stmt.close();
          conn.close();
      }
  }
package com.itheima.jdbc;
  ​
  import com.itheima.pojo.Account;
  ​
  import java.sql.*;
  import java.util.ArrayList;
  import java.util.List;
  ​
  public class JDBCDemo {
      public static void main(String[] args) throws Exception {
          //1.注册驱动
          Class.forName("com.mysql.jdbc.Driver");
  ​
          //2.获取连接
          String url = "jdbc:mysql://127.0.0.1:3306/xiaohaizi";//xiaohaizi是数据库的名字
          String username = "root";
          String password = "fyw040806";
          Connection conn = DriverManager.getConnection(url,username,password);
  ​
          String sql = "select * from account";
  ​
          Statement stmt = conn.createStatement();
  ​
          ResultSet rs = stmt.executeQuery(sql);
  ​
          //创建集合
          List<Account> list = new ArrayList<>();
  ​
          while(rs.next()){//当前行如果有效就继续执行
              Account account = new Account();
  ​
              int id = rs.getInt(1);//括号里面是列数,这里的列数从1开始算
              String name = rs.getString(2);
              double money = rs.getDouble(3);
  ​
              //赋值
              account.setId(id);
              account.setMoney(money);
              account.setName(name);
  ​
              //存入集合
              list.add(account);
          }
  ​
          System.out.println(list);
          //7.释放资源
          rs.close();
          stmt.close();
          conn.close();
      }
  }
package com.itheima.pojo;
  ​
  public class Account {
      private int id;
      private String name;
      private double money;
  ​
  ​
      public int getId() {
          return id;
      }
  ​
      public void setId(int id) {
          this.id = id;
      }
  ​
      public String getName() {
          return name;
      }
  ​
      public void setName(String name) {
          this.name = name;
      }
  ​
      public double getMoney() {
          return money;
      }
  ​
      public void setMoney(double money) {
          this.money = money;
      }
  ​
      @Override
      public String toString() {
          return "Account{" +
                  "id=" + id +
                  ", name='" + name + '\'' +
                  ", money=" + money +
                  '}';
      }
  }

PreparedStatement

数据库连接池

System.out.println(System.getProperty("user.dir"));

找到当前代码针对的路径

 package com.itheima.druid;
  ​
  import com.alibaba.druid.pool.DruidDataSourceFactory;
  ​
  import javax.sql.DataSource;
  import java.io.FileInputStream;
  import java.sql.Connection;
  import java.util.Properties;
  ​
  public class Druid {
      public static void main(String[] args) throws Exception {
          //1.导入jar包
  ​
          //2.定义配置文件
  ​
          //3.加载配置文件
          Properties prop = new Properties();
          prop.load(new FileInputStream("jdbc-demo/src/Druid.properties"));
          //4.获取连接池对象
          DataSource dateSource = DruidDataSourceFactory.createDataSource(prop);
          //5.获取数据库连接connection
          Connection connection = dateSource.getConnection();
  ​
          System.out.println(connection);
      }
  }

增删查改

package com.itheima.example;
  ​
  import com.alibaba.druid.pool.DruidDataSourceFactory;
  import com.itheima.pojo.Brand;
  import org.junit.Test;
  ​
  import javax.sql.DataSource;
  import java.io.FileInputStream;
  import java.io.FileNotFoundException;
  import java.sql.Connection;
  import java.sql.PreparedStatement;
  import java.sql.ResultSet;
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Properties;
  ​
  /**
   * 品牌数据的增删改查操作
   */
  public class BrandTest {
      @Test
      public void testSelectAll() throws Exception {
          //加载配置文件
          Properties prop = new Properties();
          prop.load(new FileInputStream("src/Druid.properties"));
          //获取连接池对象
          DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
          //获取数据库连接
          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> list = new ArrayList<>();
          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 brand = new Brand();
              brand.setId(id);
              brand.setBrandName(brandName);
              brand.setCompanyName(companyName);
              brand.setOrdered(ordered);
              brand.setStatus(status);
              brand.setDescription(description);
  ​
              list.add(brand);
          }
          System.out.println(list);
          //释放资源
          rs.close();
          pstmt.close();
          conn.close();
      }
  ​
      @Test
      /**
       * 1.sql
       * 2.需要参数
       * 3.结果:返回boolean值
       * 不需要添加id,这个由数据库自动生成
       */
      public void testAddAll() throws Exception {
          //接收页面提交的参数
          String brandName = "香飘飘";
          String companyName = "香飘飘";
          int ordered = 1;
          String description = "绕地球一圈";
          int status = 1;
  ​
          //加载配置文件
          Properties prop = new Properties();
          prop.load(new FileInputStream("src/Druid.properties"));
          //获取连接池对象
          DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
          //获取数据库连接
          Connection conn = dataSource.getConnection();
  ​
          //2.定义sql语句
          String sql = "insert into tb_brand(brand_name, company_name, ordered, description, status) values(?,?,?,?,?);";
  ​
          //3.获取pstmt对象
          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);
          //5.执行sql
          int count = pstmt.executeUpdate();//影响的行数
          //6.返回结果
          System.out.println(count>0);
  ​
          //释放资源
          pstmt.close();
          conn.close();
      }
  ​
      @Test
      /**
       * 1.sql
       * 2.需要参数
       * 3.结果:返回boolean
       */
      public void testUpdateAll() throws Exception {
          //接收页面提交的参数
          String brandName = "香飘飘";
          String companyName = "香飘飘";
          int ordered = 100;
          String description = "绕地球三圈";
          int status = 1;
          int id = 4;
  ​
          //加载配置文件
          Properties prop = new Properties();
          prop.load(new FileInputStream("src/Druid.properties"));
          //获取连接池对象
          DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
          //获取数据库连接
          Connection conn = dataSource.getConnection();
  ​
          //2.定义sql语句
          String sql = "update tb_brand\n" +
                  "    set brand_name = ?,\n" +
                  "    company_name = ?,\n" +
                  "    ordered = ?,\n" +
                  "    description = ?,\n" +
                  "    status = ?\n" +
                  "    where id = ?;";
  ​
          //3.获取pstmt对象
          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);
          //5.执行sql
          int count = pstmt.executeUpdate();//影响的行数
          //6.返回结果
          System.out.println(count>0);
  ​
          //释放资源
          pstmt.close();
          conn.close();
      }
  ​
      @Test
      /**
       * 1.sql
       * 2.需要参数id
       * 3.结果:返回boolean
       */
      public void testDeleteById() throws Exception {
          //接收页面提交的参数
          int id = 5;
  ​
          //加载配置文件
          Properties prop = new Properties();
          prop.load(new FileInputStream("src/Druid.properties"));
          //获取连接池对象
          DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
          //获取数据库连接
          Connection conn = dataSource.getConnection();
  ​
          //2.定义sql语句
          String sql = "delete from tb_brand where id = ?;";
  ​
          //3.获取pstmt对象
          PreparedStatement pstmt = conn.prepareStatement(sql);
  ​
          //4.设置参数
          pstmt.setInt(1,id);
          //5.执行sql
          int count = pstmt.executeUpdate();//影响的行数
          //6.返回结果
          System.out.println(count>0);
  ​
          //释放资源
          pstmt.close();
          conn.close();
      }
  }


http://www.kler.cn/a/368961.html

相关文章:

  • 第三十一篇:TCP协议如何解决丢包的问题,TCP系列六
  • uniapp+uniCloud前端独立开发全栈项目Vue3版本学习路线,轻松开发H5、微信小程序、APP
  • Spring Boot租房管理系统:开发与实践
  • Spring 配置文件动态读取pom.xml中的属性
  • vue mysql 直连
  • 汽车电子行业的LIMS:提升质量与效率的关键助力
  • 【STM32】单片机ADC原理详解及应用编程
  • 美国大学生数学建模竞赛(MCM/ICM)介绍
  • 高速自爆穿梭无人机技术详解
  • 【架构-33】Ribbon、Nginx、Gateway之间的区别和联系
  • OCR应用之集装箱箱号自动识别技术,原理与应用
  • matlab逻辑与有两种表达
  • 深入浅出 C++ STL:解锁高效编程的秘密武器
  • vLLM推理部署Qwen2.5
  • C++学习路线(二十八)
  • 图---java---黑马
  • SELinux详解
  • 图像处理学习笔记-20241021
  • Spring Boot 应用开发全攻略:从入门到精通
  • python——文件存储与写入path