Java实现连接数据库验证登录和注册(附详细知识点讲解)

这篇具有很好参考价值的文章主要介绍了Java实现连接数据库验证登录和注册(附详细知识点讲解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、前言

1.1、为什么要写这篇文章

学完Java基础后,一般会做个项目练手(上一篇博客有讲到 Java在线聊天室课程设计 )
当中肯定会涉及到登录验证,但没学过数据库 😅,不知道如何操作;只能把用户账户密码预存在一个txt文本当中,然后通过IO流读取验证
最后去搜相应的资料和网课进行学习,现在问题已解决,给大家做分享

1.2、使用的软件

IDEA:编写Java代码,eclipse也可
Navicat:图形化操作数据库,当然IDEA里面也有内置的DataBase,不过社区版只能下载相应的插件。除此,在Navicat内可以进行SQL语句编写

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

1.3、导航

如标题所说,想要简单实现连接数据库去验证登录
👉 请直接跳转 7、用户登录验证实现 😆 ,其余内容为对应需补充的知识点

1.4、讲解视频

B站:十分钟上手JDBC

2、JDBC

2.1、简介

JDBC(Java DataBase Connectivity):是Java和数据库之间的一个桥梁,是一个规范而不是一个实现,能够执行SQL语句。它由一组用Java语言编写的类和接口组成。

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.2、导入jar包

下载地址:mysql_JDBC_jar包

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.3、创建第一个JDBC程序

新建测试类 JdbcFirstDemo ,以下是固定写法
1、加载驱动java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2、 用户信息和url
jdbc_test 这里是数据库的名称,改成自己的就行了
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea
没有表的话,在navicat当中先去建个表
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

3、连接成功
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

4、statement 执行SQL的对象
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

5、执行SQL语句,返回结果集
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

SQL语句可以现在Navicat中编写,再复制到IDEA里面:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6、释放连接
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

运行结果:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.3.5、JDBC程序完整代码

完整代码如下:

//第一个JDBC例子
public class JdbcFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1、加载驱动
//      DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());
        Class.forName("com.mysql.cj.jdbc.Driver");//固定写法,加载驱动
        //2、用户信息和url
        String url="jdbc:mysql://localhost:3306/jdbc_test?useUnicode=true&useCharacter=utf8" +
                "&userSSL=false&serverTimezone=GMT%2B8";
        String username="root";
        
        //下面一句应该为密码的英文,写博客的时候给我爆风险警告了
        //String 密码 ="123456";
        	
        //3、连接成功,数据库对象 Connection 代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //4、执行sql的对象 statement
        Statement statement = connection.createStatement();

        //5、执行sql的对象 去执行sql,可能存在结果,返回结果
        String sql="select * from player";


        ResultSet resultSet = statement.executeQuery(sql);

        //查看输出数据
        while(resultSet.next()){
            System.out.println("name = "+resultSet.getObject("name"));
            System.out.println("number = "+resultSet.getObject("number"));
            System.out.println(" 密码 = "+resultSet.getObject("password"));
        }//写博客说这里写password有风险,我就改成中文了
   

        //6、释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

2.4、JDBC工具类

思想:加载驱动、获取连接、释放连接不变,变的只有sql语句

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

这里可能有同学不清楚反射,但是没关系,可以先跟着写一遍
可以不用 db.properties 这个文件,按照 2.3.5 那种方式编写 ☹️
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.4.5、JdbcUtils工具类完整代码

public class JdbcUtils {
    private static String driver=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;

    static {
        try{
            InputStream is = JdbcUtils.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(is);

            driver=properties.getProperty("driver");
            url=properties.getProperty("url");
            username=properties.getProperty("username");
            password=properties.getProperty("password");

            //驱动只加载一次
            Class.forName(driver);
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    //获取连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }

    //释放连接
    public static void release(Connection cnn, Statement stmt, ResultSet rs){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(cnn!=null){
            try {
                cnn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

2.5、TestInsert类:增

编写数据库增加数据测试类

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.6、TestDelete类:删

编写数据库删除数据测试类

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.7、 TestUpdate类:改

编写数据库修改数据测试类

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

2.8、TestSelect类:查

编写数据库查找数据测试类
查找相对于增、删、改来说是要容易一些的 😋

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

大家可能注意到了这里rs.getString(),如果你知道是返回的是String类型就用这个,那么同理返回的int类型就用 rs.getInt()如果不知道用啥就用rs.getObject()

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

3、SQL注入

3.1、问题引入

接着上面的查询,我们现在想根据账号和密码进行信息查询 🧐
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

简单模拟一个登陆业务:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

运行结果:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

如果这个时候更改一下输入的账号和密码,不走寻常路:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

可以看到,所有的数据均符合,都被查找出来(rs.next()一直为true)

3.2、PreparedStatement对象

可以防止SQL注入!!!

3.3、PreTestSelect类:查

我们可以对之前编写的TestSelect类进行一些变化:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

3.4、PreTestInsert类:增

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

3.5、PreTestDelete类:删

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

3.6、PreTestUpdate类:改

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

4、IDEA连接数据库

其实IDEA内也可以查看数据库的表,对数据进行增删改查的操作 😋

4.1、建立连接

如果用的不是企业版,是社区版的话,就没有database这个选项

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

解决办法:下载插件,使用DB Browser

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

新建连接:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

界面如下:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

不过有几次我明明对数据进行了操作,刷新IDEA里的表,数据一直没有更新;跑到Navicat里面去看数据已经进行了更新 😅

5、事务

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

5.1、ACID原则

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

5.2 、模拟银行账户

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6、数据库连接池

6.1、问题引入

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.2、简介

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.3、开源数据库连接池

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.4、Druid下载jar包

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

提供1.2.12版本jar包的下载地址:druid-1.2.12.jar下载

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.5、配置

导入lib目录,我的IDEA自动解压了;大家若没有自动解压,需要手动Add as Library

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

根据后面要使用到的DruidDataSourceFactory的源码,应该对properties文件的属性进行修改

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.6、DruidUtils类:工具

重写工具类,不过整体和之前的JdbcUtils差不多

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

6.7、DruidTest类:测试

可以看到,基本上换汤不换药,依然正常运行 😜

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

7、用户登录验证实现

7.1、创建数据库建表

首先我们得在数据库里面有一张对应验证登录的表

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

7.2、登录按钮监听

我们利用JFrame制作一个简单的登录界面
这个时候是有登录按钮的,按钮绑定监听事件来验证登录是否正确

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

7.3、代码实现

public class LoginFrame extends JFrame {

    private static final Integer WIDTH=600;
    private static final Integer HEIGHT=400;

    public LoginFrame(){
        setTitle("登录界面");
        setSize(WIDTH,HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setLocationRelativeTo(null);

        JLabel jblBg = new JLabel();//可插入背景图片
        jblBg.setBounds(0,0,WIDTH,HEIGHT);
        jblBg.setLayout(null);
        this.add(jblBg);

        //账号
        JLabel uid = new JLabel("账号");
        uid.setBounds(170,120,50,30);
        jblBg.add(uid);
        //账号输入框
        JTextField uidInput = new JTextField();
        uidInput.setBounds(240, 120, 160, 30);
        jblBg.add(uidInput);

        //密码
        JLabel upwd=new JLabel("密码");
        upwd.setBounds(170, 180, 50, 30);
        jblBg.add(upwd);
        //密码输入框
        JPasswordField upwdInput = new JPasswordField();
        upwdInput.setBounds(240, 180, 160, 30);
        jblBg.add(upwdInput);

        //登录按钮
        JButton btnLogin=new JButton("登录");
        btnLogin.setBounds(260, 250, 100, 30);
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String getInputUid=uidInput.getText();
                String getInputUpwd=upwdInput.getText();
                Connection conn=null;
                PreparedStatement pstmt=null;
                ResultSet rs=null;
                try {
                    conn=JdbcUtils.getConnection();
                    String sql="SELECT * FROM userinfo WHERE UID =? AND UPWD =?";
                    pstmt=conn.prepareStatement(sql);
                    pstmt.setString(1,getInputUid);
                    pstmt.setString(2,getInputUpwd);
                    rs= pstmt.executeQuery();
                    //创建弹窗
                    JDialog dialog = new JDialog();
                    dialog.setLocationRelativeTo(null);
                    dialog.setSize(200,200);
                    if(rs.next()){
                        dialog.add(new JLabel("登录成功!"));
                    }else{
                        dialog.add(new JLabel("登录失败!"));
                    }
                    dialog.setVisible(true);
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }finally {
                    JdbcUtils.release(conn,pstmt,rs);
                }
            }
        });
        jblBg.add(btnLogin);
        setVisible(true);
    }
    //主函数只需运行loginFrame即可
    public static void main(String[] args) {
        new LoginFrame();
    }
}

登录成功:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

登录失败:

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

7.4、界面优化

我们可以对界面稍稍优化一下
加入背景图片,调整字体、按钮颜色 🥰

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

代码更新:

public class LoginFrame_new extends JFrame {
    private static final Integer WIDTH=600;
    private static final Integer HEIGHT=400;

    public LoginFrame_new(){
        setTitle("登录界面");
        setSize(WIDTH,HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setResizable(false);
        setLocationRelativeTo(null);

        ImageIcon imgBg= new ImageIcon("src/images/JRbg.jpg");
        JLabel jblBg = new JLabel(imgBg);//可插入背景图片
        jblBg.setBounds(0,0,WIDTH,HEIGHT);
        jblBg.setLayout(null);
        this.add(jblBg);

        //账号
        JLabel uid = new JLabel("Account:");
        uid.setBounds(150, 120, 110, 30);
        uid.setFont(new Font("PingFang SC", Font.BOLD, 17));
        uid.setForeground(Color.BLACK);
        jblBg.add(uid);
        //账号输入框
        JTextField uidInput = new JTextField();
        uidInput.setBounds(260, 120, 180, 30);
        jblBg.add(uidInput);

        //密码
        JLabel upwd=new JLabel("Password:");
        upwd.setBounds(150, 180, 110, 30);
        upwd.setFont(new Font("PingFang SC", Font.BOLD, 17));
        upwd.setForeground(Color.BLACK);
        jblBg.add(upwd);
        //密码输入框
        JPasswordField upwdInput = new JPasswordField();
        upwdInput.setBounds(260, 180, 180, 30);
        jblBg.add(upwdInput);

        //登录按钮
        JButton btnLogin=new JButton("Login");
        btnLogin.setBounds(270, 250, 110, 40);
        btnLogin.setBackground(Color.PINK);
        btnLogin.setForeground(Color.WHITE);
        btnLogin.setFont(new Font("PingFang SC", Font.BOLD, 17));
        btnLogin.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                String getInputUid=uidInput.getText();
                String getInputUpwd=upwdInput.getText();
                Connection conn=null;
                PreparedStatement pstmt=null;
                ResultSet rs=null;
                try {
                    conn= JdbcUtils.getConnection();
                    String sql="SELECT * FROM userinfo WHERE UID =? AND UPWD =?";
                    pstmt=conn.prepareStatement(sql);
                    pstmt.setString(1,getInputUid);
                    pstmt.setString(2,getInputUpwd);
                    rs= pstmt.executeQuery();
                    //创建弹窗
                    JDialog dialog = new JDialog();
                    dialog.setLocationRelativeTo(null);
                    dialog.setSize(200,200);
                    if(rs.next()){
                        dialog.add(new JLabel("登录成功!"));
                    }else{
                        dialog.add(new JLabel("登录失败!"));
                    }
                    dialog.setVisible(true);
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }finally {
                    JdbcUtils.release(conn,pstmt,rs);
                }
            }
        });
        jblBg.add(btnLogin);
        setVisible(true);
    }
    //主函数只需运行loginFrame即可
    public static void main(String[] args) {
        new LoginFrame_new();
    }
}

7.5、补充说明

😅 因为数据库连接池是后来加上去的
所以该验证登录程序未做相应的优化 😕

8、用户注册功能实现

和上面的登录换汤不换药,完全可以用上面登录界面的模板
加上一个注册按钮,点击打开注册界面,去验证注册是否成功 🤤

8.1、loginFrame修改

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

8.2、RgsterFrame类:注册

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea
java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

8.2、设置约束

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

8.3、运行结果

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

注册成功

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea

注册失败

java连接数据库登录注册,JAVA,java,数据库,开发语言,intellij-idea文章来源地址https://www.toymoban.com/news/detail-781928.html

到了这里,关于Java实现连接数据库验证登录和注册(附详细知识点讲解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flutter框架实现登录注册功能,不连接数据库

    要在Flutter框架中实现登录和注册功能,而不连接数据库,可以使用本地存储来存储用户信息。以下是一个简单的示例,演示如何使用本地存储来实现登录和注册功能。 首先,我们需要添加 shared_preferences 插件到 pubspec.yaml 文件中: 然后,在 lib 文件夹中创建一个新的文件夹

    2024年02月08日
    浏览(42)
  • MVC框架实现用户登录注册功能(连接数据库)

    一、简单理解MVC框架 二、项目结构 三、项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletControllRegister 3.6 web.xml 3.7 login.jsp 3.8 register.jsp 3.9 success.jsp 3.10 failure.jsp  四、实现效果 总结 本篇文章主要介绍利用MVC框架去实现一个简单的用户登录注册功能,内容主

    2024年02月06日
    浏览(57)
  • JavaWeb实现简易的注册登录功能(与数据库连接)

    一、创建数据库表连接 这里我们创建一个数据库名为db_user,创建库的使用可视化工具很简单就不细说了,下面sql代码块是我们创建一个简易用户表为了方便我们后续进行登录注册操作。 下面就是建好的表: 1、建一个与数据库连接的file文件:db.properties 二、创建前端页面 1、

    2024年01月19日
    浏览(47)
  • 登录注册页面连接数据库并完成注册(一)

    1:我们先从html开始,注释不多,希望谅解,下面是html页面的代码: 2:下面是一个css代码,可能比较乱: 3:然后我们看看样式是什么样子吧:  4:因为登录注册是在一个页面上面显示的,点击登录会把登录这个div页面隐藏,然后显示注册的div页面.利用的是点击事件;剩下的请看第二章哦!!!  

    2024年02月11日
    浏览(43)
  • 微信小程序 连接云数据库(不使用云函数)进行 登录、注册、查询(包括模糊查询)快速实现 亲测可用

    当连接MySQL的时候总是出现各种各样的小问题,可以选用微信小程序自带的云数据库 注:测试号不能建立云数据库 按图中步骤来 第4步中,有两种添加方式 第一种 第二种 注意: 如果你是粘贴复制的,他会报错 非数字字符\\\"无法使用外部字符串表示法位于第1行 。这时,在第

    2023年04月20日
    浏览(55)
  • C#窗体程序连接SQL Server数据库实现账号登录、账号注册、修改密码、账号注销和实名认证(不定时更新)

    这是本人用Visual Studio2019做的一个C#窗体登录程序,如标题所示,它包含了账号登录、注册账号、修改密码、注销账号和实名认证五个功能。对于有一定基础知识的小伙伴来说,应该不算太难,里面有注释说明,可能咋一看感觉代码运行的逻辑有点乱,不过没关系,相信对你会

    2024年02月02日
    浏览(70)
  • maven如何建立JavaWeb项目并连接数据库,验证登录

    这里是建立建立web项目:Maven如何创建Java web项目(纯干货版)!!!_明天更新的博客-CSDN博客 我们主要演示如何连接数据库验证登录。 1.在webapp目录下创建我们的登录页面:index.jsp    还需要再写一个验证登录成功的页面(如果页面跳转成功就代表登录成功)  内容如下:

    2024年02月13日
    浏览(44)
  • (代码注释超详细)JavaWeb连接Mysql数据库完成登录注册业务

    登录:完成连接数据库判断登陆信息是否有误 注册:将信息填写完毕后点击注册,跳转到登陆页面 主页:展示项目信息并且可以在页面内进行增删改操作 完整文件目录如下: 文件目录: bean包中填写的代码为实体类 dao模型就是写一个类,把访问数据库的代码封装起来 serv

    2023年04月22日
    浏览(92)
  • 微信小程序登录与注册(没有连接数据库)(2023年3月31日)

    提示:以下是本篇文章正文内容,下面案例可供参考 在登录表单里,输入账号、密码进行登录,在账号、密码输入框里都有友好的提示信息;登录按钮 默认是灰色不可用状态,只有输入内容后,才会变为可用状态;在登录按钮的下面提供手机快速注 册、企业用户注册、找回

    2024年02月08日
    浏览(48)
  • 【项目实战】登录与注册业务的实现(前端+后端+数据库)

             本示例基于Vue.js和mint UI实现。 目录 一、数据库的创建 二、后端接口与数据库的连接 三、前端代码实现 1.注册页相关代码 2.注册页效果 3.登录页相关代码 4.登录页效果 四、注册登录演示 五、项目文件结构         此处以 Navicat 软件进行创建,新建数据库r

    2023年04月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包