数据库连接

JDBC

Java Database Connectivity Java数据库连接

用于Java程序连接不同的数据库。

实际在Java中定义的相关数据库连接时所需的接口,不同的数据库对其进行了实现。

核心接口

  • Connection:用于设置连接的数据库的地址、账号、密码

  • PreparedStatement:用于预处理、执行sql语句

  • ResultSet:用于接收查询后的数据

以上接口都来自于java.sql包中

加载MySQL驱动

Class.forName("com.mysql.cj.jdbc.Driver");

连接MySQL数据库字符串

String url="jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai";
String username = "root";
String password = "root";

查询的步骤

1、获取连接对象Connection

2、构造sql语句String

3、预处理sql语句pst = conn.preparedStatement(sql)

4、给sql语句中的?赋值pst.serXXX(?顺序,值)

5、调用executeQuery()得到ResultSet结果集

6、遍历结果集rs.next()后rs.getXXX(字段顺序/字段名)

7、释放资源

增删改的步骤

1、获取连接对象Connection

2、构造sql语句String

3、预处理sql语句pst = conn.preparedStatement(sql)

4、给sql语句中的?赋值pst.serXXX(?顺序,值)

5、调用executeUpdate()得到受影响的行数

6、释放资源

数据查询

import com.hqyj.entity.Hero;

import java.sql.*;
import java.util.ArrayList;

public class JDBCTest {
   
    public static void main(String[] args) throws SQLException, ClassNotFoundException {
   
        //连接mysql数据库,实现查询所需的接口
        //连接对象
        // Connection conn;
        //sql预处理对象
        // PreparedStatement pst;
        //结果集对象
        // ResultSet rs;

        //查询的流程
        //1、加载mysql的驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2、连接指定的mysql
        String url = "jdbc:mysql://localhost:3306/gamedb?serverTimezone=Asia/Shanghai";
        String username = "root";
        String password = "root";
        Connection conn = DriverManager.getConnection(url,username,password);
        //3、构造sql语句
        String sql = "select * from hero";
        //4、预处理sql语句
        PreparedStatement pst = conn.prepareStatement(sql);
        //5、执行查询的方法
        ResultSet rs = pst.executeQuery();
        //6、循环读取数据
        ArrayList<Hero> heroes = new ArrayList<>();
        while (rs.next()){
   
            // rs.next()方便表示读取且判断是否还有后续数据

            //获取读取到的数据 rs.get数据类型(int columnIndex)根据字段索引获取值 rs.get数据类型(int columnString)根据字段名获取值
            int id = rs.getInt(1);
            String name = rs.getString("name");
            String sex = rs.getString("sex");
            String position = rs.getString("position");
            int price = rs.getInt("price");
            String shelf_date = rs.getString(6);
            Hero h1 = new Hero(id,name,sex,position,price,shelf_date);
            heroes.add(h1);
            // System.out.println(id + "--" + name + "--" + sex + "--" + position + "--" + price + "--" + shelf_date);
        }
        //7、释放与mysql的连接资源
        rs.close();
        pst.close();
        conn.close();
        System.out.println(heroes);
    }
}

数据增删改

package com.hqyj.dao;

import com.hqyj.entity.Hero;

import java.sql.*;
import java.util.ArrayList;

/*
* dao包称为数据持久层,用于保存操作数据库的类
* 命名通常用“表名+dao”
* */
public class HeroDao {
   
    /*
    * 查询方法
    * */

    Connection conn;
    PreparedStatement pst;
    ResultSet rs;

    public ArrayList<Hero> queryAll(){
   
        ArrayList<Hero> list = new ArrayList<>();
        try {
   
            //1、加载驱动
            Class
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值