在Windows上配置MySql开发java,导入JDBC的jar包后连接SQL Server数据库结合Java和MySql的一些简单实践

news2024/11/27 20:36:27

在Windows上配置MySql

我们先进入MySql官网
在官网中选择MySQL Installer for Windows
在这里插入图片描述
进入后选择第一个下载
在这里插入图片描述
接下来安装即可,在安装时,可以只安装MySql Server(默认选项),选择Full也可,这样会同时安装workbench以及其他组件。

安装完成后会弹出终端

输入 connect root@localhost(如果默认设置的话)连接本地Sql服务器
输入密码后,在这里插入图片描述

命令提示符左边出现灰色,即成功。
一些命令的使用这里不再提及,读者可以自行查找。

导入JDBC包

同样的,在mysql官网下载驱动
这里以Java为例
在这里插入图片描述
进入后,Windows用户会发现并没有Windows选项,我们这里选择
在这里插入图片描述
下载第二个即可。
当然,配置环境变量也是需要的,我们在c盘的Program Files中找到MySql,选择MySQL Server 8.0->bin,然后复制路径,右键此电脑->选择新建环境变量,设置名字后将路径复制到值中,然后同样在下面的Path中添加,确定即可。

导入JDBC的Jar包

我们创建一个Java项目后(ctrl+shift+p后输入create Java project)直接将下载好的JDBC中的jar后缀放入lib中
在这里插入图片描述
导入我们写的代码后,按f5运行。

接下来展示一个简单的项目:

设计用户注册和登录界面,实现用户注册和登录操作。
1、设计用户注册/登录界面;
2、使用工具在MySQL中创建user表,包括学号、姓名、密码、专业、班级;
3、实现注册操作:在user表中插入一条新纪录,但学号不能重复;
4、实现登录操作:使用输入的学号和密码在user表中查找,查找成功,弹出消息框显示“登录成功”,不成功,则回到输入界面;使用对象文件记住在本机登录的用户名,显示在用户名组合框中。

sql代码


USE student;


CREATE TABLE IF NOT EXISTS user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    student_id VARCHAR(10) UNIQUE,
    name VARCHAR(50),
    password VARCHAR(50),
    major VARCHAR(50),
    class_name VARCHAR(50)
);

Java代码

import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.*;

public class reglog extends JFrame {
    private JTextField studentIdField;
    private JTextField nameField;
    private JPasswordField passwordField;
    private JTextField majorField;
    private JTextField classField;

    public reglog() {
        setTitle("注册与登录");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(400, 300);
        setLayout(null);

        JLabel studentIdLabel = new JLabel("学号:");
        studentIdLabel.setBounds(20, 20, 80, 25);
        add(studentIdLabel);

        studentIdField = new JTextField();
        studentIdField.setBounds(120, 20, 200, 25);
        add(studentIdField);

        JLabel nameLabel = new JLabel("姓名:");
        nameLabel.setBounds(20, 50, 80, 25);
        add(nameLabel);

        nameField = new JTextField();
        nameField.setBounds(120, 50, 200, 25);
        add(nameField);

        JLabel passwordLabel = new JLabel("密码:");
        passwordLabel.setBounds(20, 80, 80, 25);
        add(passwordLabel);

        passwordField = new JPasswordField();
        passwordField.setBounds(120, 80, 200, 25);
        add(passwordField);

        JLabel majorLabel = new JLabel("专业:");
        majorLabel.setBounds(20, 110, 80, 25);
        add(majorLabel);

        majorField = new JTextField();
        majorField.setBounds(120, 110, 200, 25);
        add(majorField);

        JLabel classLabel = new JLabel("班级:");
        classLabel.setBounds(20, 140, 80, 25);
        add(classLabel);

        classField = new JTextField();
        classField.setBounds(120, 140, 200, 25);
        add(classField);

        JButton registerButton = new JButton("注册");
        registerButton.setBounds(20, 180, 100, 25);
        add(registerButton);

        JButton loginButton = new JButton("登录");
        loginButton.setBounds(140, 180, 100, 25);
        add(loginButton);

        registerButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                registerUser();
            }
        });

        loginButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                loginUser();
            }
        });
    }

    private void registerUser() {
        String studentId = studentIdField.getText();
        String name = nameField.getText();
        String password = new String(passwordField.getPassword());
        String major = majorField.getText();
        String clazz = classField.getText();

        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "*****"))//不方便展示 {
            String checkStudentIdSQL = "SELECT * FROM user WHERE student_id = ?";
            try (PreparedStatement preparedStatement = connection.prepareStatement(checkStudentIdSQL)) {
                preparedStatement.setString(1, studentId);
                ResultSet resultSet = preparedStatement.executeQuery();
                if (resultSet.next()) {
                    JOptionPane.showMessageDialog(this, "学号已存在,注册失败");
                } else {
                    String insertUserSQL = "INSERT INTO user (student_id, name, password, major, class_name) VALUES (?, ?, ?, ?, ?)";
                    try (PreparedStatement insertStatement = connection.prepareStatement(insertUserSQL)) {
                        insertStatement.setString(1, studentId);
                        insertStatement.setString(2, name);
                        insertStatement.setString(3, password);
                        insertStatement.setString(4, major);
                        insertStatement.setString(5, clazz);

                        int rowsAffected = insertStatement.executeUpdate();
                        if (rowsAffected > 0) {
                            JOptionPane.showMessageDialog(this, "注册成功");
                        } else {
                            JOptionPane.showMessageDialog(this, "注册失败");
                        }
                    }
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    private void loginUser() {
        String studentId = studentIdField.getText();
        String password = new String(passwordField.getPassword());
    
        try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student", "root", "*****")) {
            String loginUserSQL = "SELECT * FROM user WHERE student_id = ? AND password = ?";
            try (PreparedStatement preparedStatement = connection.prepareStatement(loginUserSQL)) {
                preparedStatement.setString(1, studentId);
                preparedStatement.setString(2, password);
                ResultSet resultSet = preparedStatement.executeQuery();
    
                if (resultSet.next()) {
                    
                    JOptionPane.showMessageDialog(this, "登录成功");
    
                    
                    System.out.println("登入: " + resultSet.getString("name"));
    
                   
                } else {
                    
                    JOptionPane.showMessageDialog(this, "学号或密码错误,登录失败");
                   
                }
            }
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new reglog().setVisible(true);
            }
        });
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259458.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能优化算法应用:基于蜻蜓算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜻蜓算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜻蜓算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜻蜓算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

SocialFi 和 GameFi 的碰撞 — Socrates 构建新的 Web3 流量入口

伴随着比特币现货 ETF 即将通过 SEC 批准的消息,整个加密市场在11月份达到了熊市以来的新高峰。市场普遍上涨,新的玩法和项目不断涌出吸引了大量老用户回归以及新用户加入。加密市场经过长期的低迷,终于来到了牛市的起点! 上一轮牛…

[C++]六大默认成员函数详解

☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C和Linux 🌼博客专栏:C入门 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 …

1980-2022年世界各国专利、商标申请数据/世界各国知识产权专利申请数据

1980-2022年世界各国专利、商标申请数据/世界各国知识产权专利申请数据 1、时间:1980-2022年 2、来源:WIPO数据库 3、范围:世界各国(180多个国家) 4、指标:国家名称、年份、代码、类型、专利申请总量、…

老鸟整理,银行测试业务+银行测试案例编写,超细汇总...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行的软件测试是…

2023中国SaaS大会完美收官,体验管理开辟SaaS续费增长新曲线

11月17日-19日,2023中国SaaS大会在苏州太湖万豪酒店完美收官。本场专属于SaaS人的行业盛会,设有运动会、实战闭门会、公开课、辩论赛、嘉宾对话及演讲等多项精彩活动,吸引了千余名To B(SaaS)领域创业者、投资人、企业客…

古埃及金字塔的修建

从理论上说,古埃及人完全有能力设计并建造出充满各种奇妙细节的胡夫金字塔,但后世还是不断涌现出质疑之声,原因倒也简单,那就是胡夫金字塔实在太大了。据推算,整座金字塔使用大约230万块巨石,总质量可达约5…

通俗易懂的spring Cloud;业务场景介绍 二、Spring Cloud核心组件:Eureka 、Feign、Ribbon、Hystrix、zuul

文章目录 通俗易懂的spring Cloud一、业务场景介绍二、Spring Cloud核心组件:Eureka三、Spring Cloud核心组件:Feign四、Spring Cloud核心组件:Ribbon五、Spring Cloud核心组件:Hystrix六、Spring Cloud核心组件:Zuul七…

深度学习中小知识点系列(五) 解读HSV模型随机增强图像

文章目录 图像HSV模型简介RGB模型转HSV模型opencv关于HSV模型实验随机增强图像HSV 图像HSV模型简介 HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 也称六角锥体模型(Hexcone Model)(参考百度)。在HSV模型…

Java研学-集合框架

一 关于集合框架 1 集合是Java提出的用来进行多个数据存储的"容器",数组也具备这样的功能, 2 由于数组一旦创建长度固定,且只能存放一种数据类型,不够灵活,Java提出更灵活,存放任意的数据类型的容器也就是集合 3 集合和数组的异同点 相同点:都是用来存…

西南科技大学数字电子技术实验一(数字信号基本参数与逻辑门电路功能测试及FPGA 实现 )预习报告

手写报告稍微认真点写,80+随便有 目录 一、计算/设计过程 1、通过虚拟示波器观察和测量信号 2、通过实际电路(电阻、开关、发光二极管)模拟逻辑门电路 二、画出并填写实验指导书上的预表

ELK----日志分析

ELK相关知识 ELK的概念与组件 ELK平台是一套完整的日志集中处理解决方案,将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用, 完成更强大的用户对日志的查询、排序、统计需求。 E:ElasticSearch (ES) ES是…

智能电表——电源应用

作为智能电网的重要组成部分,智能电表在智能电网中发挥着不可或缺的作用。智能电表是指以智能芯片为核心,通过运用通讯技术以及计算机技术等,能够进行电能计费、电功率的计量和计时,并且能够和上位机进行通讯、用电管理的电度表。…

STK Components 二次开发- 区域

1.创建区域 需要提供点坐标。最少三个点可以确定一个区域。 创建区域也是一样,创建对象然后设置点位置 ,然后设置区域属性。 var referenceSurface m_earth.Shape; // We specify the boundary in terms of nodes connected by geodesics.var result…

PlantUML语法(全)及使用教程-时序图

目录 1. 参与者1.1、参与者说明1.2、背景色1.3、参与者顺序 2. 消息和箭头2.1、 文本对其方式2.2、响应信息显示在箭头下面2.3、箭头设置2.4、修改箭头颜色2.5、对消息排序 3. 页面标题、眉角、页脚4. 分割页面5. 生命线6. 填充区设置7. 注释8. 移除脚注9. 组合信息9.1、alt/el…

卷积神经网络(CNN)识别神奇宝贝小智一伙

文章目录 一、前言二、前期工作1. 设置GPU(如果使用的是CPU可以忽略这步)2. 导入数据3. 查看数据 二、数据预处理1.加载数据2. 可视化数据4. 配置数据集 三、调用官方网络模型四、设置动态学习率五、编译六、训练模型七、模型评估八、保存and加载模型九、…

Linux网络——数据链路层

目录 一.认识以太网 二.以太网帧格式 三.认识MAC地址 四.认识MTU 五.以太局域网的通信原理 六.其他重要协议 1.DNS协议 2.域名简介 3.ICMP协议 4.NAT技术 5.NAT技术的缺陷 6.NAT和代理服务器 一.认识以太网 "以太网" 不是一种具体的网络, 而是一种技术标…

C语言入门---位操作

目录 1. 两个数不同的二进制位个数 2.原码、反码、补码 3.不创建临时变量实现两个数的交换 4.求一个整数存储在内存中的二进制中1的个数 5. 特例-1 6.将指定的位置置1 7.将指定位置置1 8.a与a 9.||与&& 10.逗号表达式 11.srand与rand 12.sizeof 13.结构体初始…

一文了解低代码平台

随着数字化转型的加速,企业需要更快速地开发和交付应用程序,以适应市场需求和客户需求的变化。在这种情况下,低代码平台成为了企业的首选方案之一。 想象一下,你可以用一个可视化工具构建自己的应用程序,而无需编写繁琐…

保护IP地址不被窃取的几种方法

随着互联网的普及和信息技术的不断发展,网络安全问题日益凸显。其中,保护个人IP地址不被窃取成为了一个重要的问题。IP地址是我们在互联网上的身份标识,如果被他人获取,就可能导致个人隐私泄露、计算机受到攻击等一系列问题。因此…