JDBC


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

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

初始化连接数量

1
initialSize=5

最大连接数

1
maxActive=10

最大等待时间

1
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();

文章作者: 是小康呀~
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 是小康呀~ !
评论
  目录