jdbc连接(没有面向对象)

本文介绍了使用JDBC连接数据库的基本流程,包括加载驱动、建立连接、编写SQL语句等7个步骤。通过SQLyog创建数据库和表格,并设置外键。在IDEA中实现代码,展示了全量查询、添加、删除、更新以及登录验证和模糊查询的示例。最终,展示了功能实现的完整结果。
摘要由CSDN通过智能技术生成

jdbc的概念
java database connection(就是java和数据库连接)

完成这个需要用到的工具(idea(编写代码)和SQLyog(mysql)),所以需要安装idea,mysql数据库和SQLyog

一般完成jdbc需要七个步骤
1.加载驱动
2.创建连接
3.编写sql语句
4.执行sql语句
5.得到结果集
6.处理结果
7.关闭连接

下面进行具体的实例
项目完成前需要兴建一个数据库
进入SQLyog
在这里插入图片描述
Ctrl+D(快捷键)创建数据库
在这里插入图片描述
字符和排列是顺序按照我的这个

创建完数据库之后新建表格
在这里插入图片描述
在这里插入图片描述
红框的地方注意一下
在这里插入图片描述
这边同理
在这里插入图片描述
两表创建完成之后吧user表外部键设置一下(应为user表中的tid是type表中的主键)
在这里插入图片描述
在这里插入图片描述
这边最后输入数据
这样数据库就设置完成了
下面就是idea中代码的实现
创建一个项目
在这里插入图片描述
这边先显示全部查询的代码

  public static void PrintAllUser(){
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
            //3.编写sql语句
            String sql = "select * from tb_user";
            //4.选中语句并执行
            PreparedStatement pstm = conn.prepareStatement(sql);
            //5.产生结果
            /**结果分为三种
             *  1.聚合函数:产生的结果为1行一列
             *  2.增删改,几行受影响
             *  3.查询结果,产生一个结果集
             */
           ResultSet rs = pstm.executeQuery();
            //6.处理结果
            while (rs.next()){
                System.out.println("用户编号:"+rs.getInt(1)+",用户名称:"+rs.getString(2)+",用户密码:"+rs.getString(3)+",用户类型:"+rs.getInt(4));
            }
            //7.关闭连接
            rs.close();
            pstm.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这边是增加的代码(有个bug,用户名一致不会报错,要加个判断语句)

 public static void addUser(){
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
            //3.编写sql语句
            String sql = "insert into tb_user values(null,?,?,?)"; //?代表占位符,占的是一个空位置,为了放数据
            //4.选中语句并执行
            PreparedStatement pstm = conn.prepareStatement(sql);
            System.out.println("请输入用户名:");
            String username = in.next();
            pstm.setString(1,username);
            System.out.println("请输入密码:");
            pstm.setString(2,in.next());
            System.out.println("请输入tid:");
            pstm.setInt(3,in.nextInt());
            //5.产生结果
            int num = pstm.executeUpdate();
            //6.处理结果
            System.out.println("新增成功<"+num+">行受影响");
            //7.关闭连接
            pstm.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这边是删除的代码

 public static void delUser(){
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
            //3.编写sql语句
            String sql = "delete from tb_user where uid =?"; //?代表占位符,占的是一个空位置,为了放数据
            //4.选中语句并执行
            PreparedStatement pstm = conn.prepareStatement(sql);
            System.out.println("请输入需要删除的uid");
            pstm.setInt(1, in.nextInt());
            //5.产生结果
            int num = pstm.executeUpdate();
            //6.处理结果
            if (num>0){
                System.out.println("删除成功<"+num+">行受影响");
            }else {
                System.out.println("删除失败");
            }
            //7.关闭连接
            pstm.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

这边是修改的代码

 public  static void updateUser(){
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
            //3.编写sql语句
            String sql = "update tb_user set username = ?,password=?,tid=? where uid =?"; //?代表占位符,占的是一个空位置,为了放数据
            //4.选中语句并执行
            PreparedStatement pstm = conn.prepareStatement(sql);
            System.out.println("输入需要修改的uid");
            pstm.setInt(4,in.nextInt());
            System.out.println("请输入需要修改成的用户名");
            pstm.setString(1,in.next());
            System.out.println("请输入需要修改完的密码");
            pstm.setString(2,in.next());
            System.out.println("输入需要修改的tid");
            pstm.setInt(3, in.nextInt());
            //5.产生结果
            int num = pstm.executeUpdate();
            //6.处理结果
            if (num >0){
                System.out.println("新增成功<"+num+">行受影响");
            }else {
                System.out.println("失败");
            }
            //7.关闭连接
            pstm.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

下面是登录的代码(登录我这边的逻辑:先输入用户名,去查看数据库中是否存在此用户名,没有就返回登录失败,如果找到就给返回数据库中的密码,在与自己输入的密码进行比较)

 public  String selectUid(String username){
        String pass="";
        try {
            //1.加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2.创建连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
            //3.编写sql语句
            String sql = "select password from tb_user where username=?";
            //4.选中语句并执行
            PreparedStatement pstm = conn.prepareStatement(sql);
            pstm.setString(1,username);
            //5.产生结果
            ResultSet rs = pstm.executeQuery();
            //6.处理结果
            while (rs.next()){
                pass=rs.getString(1);
            }
            //7.关闭连接
            rs.close();
            pstm.close();
            conn.close();
            return pass;
        } catch (Exception e) {
            return null;
        }
    }
 public  void Login(){
        Scanner in = new Scanner(System.in);
        System.out.println("欢迎登录");
        System.out.println("请输入用户名:");
        String username = in.next();
        System.out.println("请输入密码:");
        String password = in.next();
        //查找出数据库中的用户名和密码
            if (password.equals(selectUid(username))){
                System.out.println("登陆成功!");
                Menu();
            }else {
                System.out.println("账号或密码错误!请重新登录");
                Login();
            }
        }

下面是模糊查询

 public static void vagueSelect(){
        //1.查询tb_user这张表的数据
            try {
                //1.加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //2.创建连接
                Connection conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/db_ssm?useSSL=true&characterEncoding=utf8","root","root");
                //3.编写sql语句
                String sql = "select * from tb_user where username like ?";
                //4.选中语句并执行
                PreparedStatement pstm = conn.prepareStatement(sql);
                System.out.println("请输入需要模糊查询的用户名");
                String name=in.next();
                pstm.setString(1,"%"+name+"%");
                //5.产生结果
                ResultSet rs = pstm.executeQuery();
                //6.处理结果
                while (rs.next()){
                    System.out.println("用户名:"+rs.getString(2));
                }
                //7.关闭连接
                rs.close();
                pstm.close();
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
    }

下面是菜单的实现

 public void Menu(){
        System.out.println("1.增加\t2.删除\t3.修改\t4.查找全部数据\t5.模糊查询\t6.退出");
        int choice = in.nextInt();
        switch (choice){
            case 1:
                addUser();
                Menu();
                break;
            case 2:
                delUser();
                Menu();
                break;
            case 3:
                updateUser();
                Menu();
                break;
            case 4:
                PrintAllUser();
                Menu();
                break;
            case 5:
                vagueSelect();
                Menu();
                break;
            case 6:
                System.exit(0);
        }
    }

最后调此方法‘

 public static void main(String[] args) {
        new TestDemo01().Login();
    }

最后展现一下我的实现结果
在这里插入图片描述
在这里插入图片描述
完成了jdbc的简单的增删改查,登录和模糊查询的功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值