JDBC操作数据库增删改查(基础版)

JDBC简介:

                        JDBC(Java DataBase Connectivity, java数据库连接)是一种用于执行SQL语句的Java API (简而言之 使用JAVA语言 让SQL在MySQL中执行),可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

 

为什么需要JDBC?反向思考没有JDBC会出现什么情况?

 

此时每一个程序员要学习每个数据库官方提供的方法,此时也不太好!

使用接口:定义方法,但是没有实现。 多态,定制规则。

介绍完毕,上代码!!!

实体类

//创建表格实体类,实体类属性必须和表格列名一致(见名知意)写入get set  toString方法
public class Food {
    private  Integer fid;
    private  String fname;
    private  float price;
    private Integer kid;

    public Integer getFid() {
        return fid;
    }

    public void setFid(Integer fid) {
        this.fid = fid;
    }

    public String getFname() {
        return fname;
    }

    public void setFname(String fname) {
        this.fname = fname;
    }

    public float getPrice() {
        return price;
    }

    public void setPrice(float price) {
        this.price = price;
    }

    public Integer getKid() {
        return kid;
    }

    public void setKid(Integer kid) {
        this.kid = kid;
    }

    @Override
    public String toString() {
        return "Food{" +
                "fid=" + fid +
                ", fname='" + fname + '\'' +
                ", price=" + price +
                ", kid=" + kid +
                '}';
    }
}

 dao层操作


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;


public class FoodDao {
    //提升作用域
    Connection connection =null;
    PreparedStatement preparedStatement =null;
    ResultSet resultSet =null;


    //查询所有
    public List<Food> findAll(){

        ArrayList<Food> list = new ArrayList<>();

        try {
         //加载驱动
         Class.forName("com.mysql.cj.jdbc.Driver");
         //  DriverManager:驱动的管理者,通过它创建连接。-----通过此方法根据url路径找到数据库并验证账户和密码
         connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/111", "root", "root");
         // sql预编译/加载
         String sql="select * from food";
         //执行sql语句
         preparedStatement = connection.prepareStatement(sql);
         resultSet = preparedStatement.executeQuery();
        while (resultSet.next()){
            Food food = new Food();
            food.setFid(resultSet.getInt("fid"));
            food.setFname(resultSet.getString("fname"));
            food.setPrice(resultSet.getInt("price"));
            food.setKid(resultSet.getInt("kid"));
            list.add(food);
        }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
            //  关闭连接   判断连接是否开启  使用完关闭,释放资源
            if (resultSet!=null){
                resultSet.close();
            }
            if (preparedStatement!=null){
                preparedStatement.close();
            }
            if (connection!=null){
                connection.close();
            }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return list;

    }


    //新增操作
    public  int add(Food food){
        try {

            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //  DriverManager:驱动的管理者,通过它创建连接。-----通过此方法根据url路径找到数据库并验证账户和密码
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/111", "root", "root");
            // sql预编译/加载
            String sql="insert into food values  (null,?,?,?)";
            preparedStatement = connection.prepareStatement(sql);
            //根据数字和问号占位符对应,根据对象获取值
            preparedStatement.setObject(1,food.getFname());
            preparedStatement.setObject(2,food.getPrice());
            preparedStatement.setObject(3,food.getKid());
            //i 返回执行sql语句后影响的行数
            int i = preparedStatement.executeUpdate();

            return i;
        }catch (Exception e){
        e.printStackTrace();
        }finally {
            try {
                //  关闭连接   判断连接是否开启  使用完关闭,释放资源
                if (resultSet!=null){
                    resultSet.close();
                }
                if (preparedStatement!=null){
                    preparedStatement.close();
                }
                if (connection!=null){
                    connection.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return  0;

    }

    //根据id删除数据
    public  int del(Integer id){
        try {

            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //  DriverManager:驱动的管理者,通过它创建连接。-----通过此方法根据url路径找到数据库并验证账户和密码
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/111", "root", "root");
            // sql预编译/加载
            String sql="delete from food where fid=?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setObject(1,id);
            //i 返回执行sql语句后影响的行数
            int i = preparedStatement.executeUpdate();

            return i;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                //  关闭连接   判断连接是否开启  使用完关闭,释放资源
                if (resultSet!=null){
                    resultSet.close();
                }
                if (preparedStatement!=null){
                    preparedStatement.close();
                }
                if (connection!=null){
                    connection.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return  0;
    }

    //修改操作
    public  int update(Food food ){
        try {

            //加载驱动
            Class.forName("com.mysql.cj.jdbc.Driver");
            //  DriverManager:驱动的管理者,通过它创建连接。-----通过此方法根据url路径找到数据库并验证账户和密码
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/111", "root", "root");
            // sql预编译/加载
            String sql="update  food set  fname=?,price =?,kid=? where fid =?";
            preparedStatement = connection.prepareStatement(sql);
            //根据数字和问号占位符对应,根据对象获取值
            preparedStatement.setObject(1,food.getFname());
            preparedStatement.setObject(2,food.getPrice());
            preparedStatement.setObject(3,food.getKid());
            preparedStatement.setObject(4,food.getFid());
            //i 返回执行sql语句后影响的行数
            int i = preparedStatement.executeUpdate();

            return i;
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try {
                //  关闭连接   判断连接是否开启  使用完关闭,释放资源
                if (resultSet!=null){
                    resultSet.close();
                }
                if (preparedStatement!=null){
                    preparedStatement.close();
                }
                if (connection!=null){
                    connection.close();
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        return  0;

    }



}

 测试类测试代码

package com.lj1.Test;

import com.lj1.dao.FoodDao;
import com.lj1.entity.Food;

import java.util.List;

/**
 * @program: JDBCday02
 * @description:
 * @author: 刘健
 * @create: 2021-10-21 13:53
 **/
public class Test1 {
    
    //查询所有 
    public static void main(String[] args) {
        FoodDao foodDao = new FoodDao();
        List<Food> all = foodDao.findAll();
        for (int i = 0; i < all.size(); i++) {
            Food food = all.get(i);

            System.out.println(food.getFid());
            System.out.println(food.getFname());
            System.out.println(food.getPrice());
            System.out.println(food.getKid());

        }

    }

    //新增操作
   /* public static void main(String[] args) {
        FoodDao foodDao = new FoodDao();
        Food food = new Food();
        food.setFname("汉堡包");
        food.setPrice(1.1f);
        food.setKid(1);
        int add = foodDao.add(food);
        System.out.println(add);
    }*/
    
    //根据id删除整行数据
   /* public static void main(String[] args) {
        FoodDao foodDao = new FoodDao();
        int del = foodDao.del(17);
        System.out.println(del);
    }*/

        //根据id修改数据
    /*public static void main(String[] args) {
        FoodDao foodDao = new FoodDao();
        Food food = new Food();
        food.setFid(14);
        food.setFname("牛肉堡");
        food.setPrice(1.2f);
        food.setKid(2);
        int add = foodDao.update(food);
        System.out.println(add);
    }*/





}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值