0


如何通过JDBC访问MySQL数据库?手把手实现登录界面(图解+完整代码)

💁 个人主页:黄小黄的博客主页
❤️ 支持我:👍 点赞 🌷 收藏 🤘关注
🎏 格言:一步一个脚印才能承接所谓的幸运

本文来自专栏:JDBC从入门到实战
欢迎点击支持订阅专栏 ❤️
在这里插入图片描述


写在前面

本文环境:

jdk1.8

mysql8.0

IntelliJ IDEA 2021.3

DataGrip 2021.3


 撰写本文是由于一位粉丝的求助,凑巧又是笔者本次的实验内容,所以本文只对 JDBC 如何访问数据库作操作性的叙述,并不涉及 JDBC 基础相关内容,有需要请期待专栏后续更新。本文仅供同学们交流学习使用,图片均有水印,请勿 copy,如需转载,欢迎私信。


文章目录


1 操作准备

1.1 导入 Mysql 对应的 jar 包

  1. 首先进入 Mysql 下载官网: https://www.mysql.com/downloads/,将页面滑动到底端,点击 MySQL Community (GPL) Downloads在这里插入图片描述
  2. 选择 Connector/J在这里插入图片描述
  3. 选择 General Availability(GA) Releases,在 Select Operating System 下拉列表选择 Platform Independent,然后选择任意一种压缩包格式的文件 Download,根据提示下载,如果需要其他版本,可以点击 Archives在这里插入图片描述
  4. 下载完成后进行解压,即可在当前文件夹中看到下载好的 jar 包了。在这里插入图片描述
  5. 打开 idea 创建一个项目 JDBC 并创建 Moudle JDBCtest,在该模块下创建个目录 lib,并将刚刚下载好的 jar 包拷贝过来。在这里插入图片描述
  6. 右键将 jar 包, Add as Library在这里插入图片描述

1.2 创建Mysql数据库与基本表

🐰 打开 datagrip,新建一个查询,通过下面的代码创建一个 myuser 数据库用于 JDBC 访问练习,并创建一个表并录入数据,具体代码及表数据如下:

CREATEDATABASE myuser;USE myuser;CREATETABLEIFNOTEXISTS account(
    name VARCHAR(50)PRIMARYKEYNOTNULL,
    password VARCHAR(50)NOTNULL);INSERTINTO account VALUES('张三','123');INSERTINTO account VALUES('李四','123');

在这里插入图片描述


2 JDBC基础实验

2.1 编写JDBC连接MySQL数据库myuser,查询并显示account表数据实例

🐻 1. 先创建项目、包及 Test.java,如下图所示:
在这里插入图片描述
🐦 2.运行下面的JDBC代码,代码后附运行结果图,记得将数据库密码(你的密码)位置处改成自己的密码:

packageJDBC_test;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.Statement;/**
 * @author 小黄小黄不再迷茫
 * @version 1.0
 */publicclassTest{publicstaticvoidmain(String args[]){try{Class.forName("com.mysql.cj.jdbc.Driver");//加载MYSQL JDBC驱动程序System.out.println("Success loading Mysql Driver!");}catch(Exception e){System.out.print("Error loading Mysql Driver!");
            e.printStackTrace();}try{Connection connect =DriverManager.getConnection("jdbc:mysql://localhost:3306/myuser","root","你的密码");//建立连接,URL为jdbc:mysql//服务器地址/数据库myuser ,后面的2个参数分别是登陆用户名和密码System.out.println("Success connect Mysql server!");Statement stmt = connect.createStatement();//创建运行对象ResultSet rs = stmt.executeQuery("select * from account");//执行查询account表while(rs.next()){System.out.println(rs.getString("name"));//获取name列的值(字符串型)}}catch(Exception e){System.out.print("get data error!");
            e.printStackTrace();}}}

在这里插入图片描述

2.2 编写JDBC连接MySQL数据库,实现myuser数据库的增、删、改查的实例

🐰 1. 创建如下包、类:
在这里插入图片描述
🐦 2.通过下面代码对 myuser 数据库的 account 表实现增删改查的操作:
Tips:同样别忘记将“你的密码”改成你的数据库密码哦!

packageJDBC_test2;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;/**
 * @author 小黄小黄不再迷茫
 * @version 1.0
 */publicclassTest2{staticConnection conn;staticStatement st;publicstaticvoidmain(String[] args){insert();//插入添加记录update();//更新记录数据delete();//删除记录query();//查询记录并显示}//(2)连接的获取,在操作前必须先获取与数据库的连接。privatestaticConnectiongetConnection(){String driver ="com.mysql.cj.jdbc.Driver";//若报错使用com.mysql.jdbc.DriverString url ="jdbc:mysql://localhost:3306/myuser?serverTimezone=UTC ";//myuser是数据库名称String username ="root";//数据库用户名String password ="你的密码";//数据库用户密码Connection conn =null;try{Class.forName(driver);//classLoader,加载对应驱动
            conn =(Connection)DriverManager.getConnection(url, username, password);}catch(ClassNotFoundException e){
            e.printStackTrace();}catch(SQLException e){
            e.printStackTrace();}return conn;}//(3) 插入(insert)操作publicstaticvoidinsert(){
        conn =getConnection();// 首先要获取连接,即连接到数据库try{String sql ="insert into account (name,password) values('lucy','123')";// 插入数据的sql语句
            st =(Statement) conn.createStatement();// 创建用于执行静态sql语句的Statement对象int count = st.executeUpdate(sql);// 执行插入操作的sql语句,并返回插入数据的个数System.out.println("向account表中插入 "+ count +" 条数据");//输出插入操作的处理结果
            conn.close();//关闭数据库连接}catch(SQLException e){System.out.println("插入数据失败"+ e.getMessage());}}//(4) 更新(update)操作publicstaticvoidupdate(){
        conn =getConnection();//同样先要获取连接,即连接到数据库try{String sql ="update account set password='0000' where name = '张三'";// 更新数据的sql语句
            st =(Statement) conn.createStatement();//创建用于执行静态sql语句的Statement对象,st属局部变量int count = st.executeUpdate(sql);// 执行更新操作的sql语句,返回更新数据的个数System.out.println("account表中更新 "+ count +" 条数据");//输出更新操作的处理结果
            conn.close();//关闭数据库连接}catch(SQLException e){System.out.println("更新数据失败");}}//(5)查询(query)操作publicstaticvoidquery(){
        conn =getConnection();//同样先要获取连接,即连接到数据库try{String sql ="select * from account";// 查询数据的sql语句
            st =(Statement) conn.createStatement();//创建用于执行静态sql语句的Statement对象,st属局部变量ResultSet rs = st.executeQuery(sql);//执行sql查询语句,返回查询数据的结果集System.out.println("最后的查询结果为:");while(rs.next()){// 判断是否还有下一个数据// 根据字段名获取相应的值String name = rs.getString("name");String password = rs.getString("password");//输出查到的记录的各个字段的值System.out.println(name +" "+ password +" ");}
            conn.close();//关闭数据库连接}catch(SQLException e){System.out.println("查询数据失败");}}//(6)删除(delete)操作publicstaticvoid delete (){
            conn =getConnection();//同样先要获取连接,即连接到数据库try{String sql ="delete from account  where name = '李四'";// 删除数据的sql语句
                st =(Statement) conn.createStatement();//创建用于执行静态sql语句的Statement对象,st属局部变量int count = st.executeUpdate(sql);// 执行sql删除语句,返回删除数据的数量System.out.println("account表中删除 "+ count +" 条数据\n");//输出删除操作的处理结果
                conn.close();//关闭数据库连接}catch(SQLException e){System.out.println("删除数据失败");}}}

在这里插入图片描述
🐱 3.回到 datagrip 查看 account 表的数据,发现表的数据成功被更新:
在这里插入图片描述


3 JDBC进阶实验——简易登录界面

3.1 具体实现

🐰 1. MyConnection类,实现数据库连接:
Tips:同样别忘记将“你的密码”改成你的数据库密码哦!

packageJDBC_test3;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;/**
 * @author 小黄小黄不再迷茫
 * @version 1.0
 */publicclassMyConnection{publicstaticConnectiongetConnection(){String driver ="com.mysql.cj.jdbc.Driver";//使用Jar包驱动String url ="jdbc:mysql://localhost:3306/myuser?serverTimezone=UTC";//链接数据库端口,数据库名String username ="root";//数据库用户名String password ="你的密码";//数据库密码Connection conn =null;try{Class.forName(driver);//classLoader,加载对应驱动
            conn =(Connection)DriverManager.getConnection(url, username, password);}catch(ClassNotFoundException e){//异常捕获
            e.printStackTrace();}catch(SQLException e){
            e.printStackTrace();}return conn;}}

🐦 2. Login 类,实现登录界面:

packageJDBC_test3;importjavax.swing.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;/**
 1. @author 小黄小黄不再迷茫
 2. @version 1.0
 */publicclassLoginextendsJFrame{privateJLabelJLname;privateJLabelJLpwd;privateJTextFieldJTname;privateJPasswordFieldJTpwd;privateJButtonJBsure;privateJButtonJBexit;publicLogin(String title){super(title);JLname=newJLabel("用户名:");//设置Label和按钮名JLpwd=newJLabel("密  码:");JTname=newJTextField(20);JTpwd=newJPasswordField(20);JBsure=newJButton("确定");JBexit=newJButton("取消");JLname.setBounds(40,40,60,25);//设置Label和按钮大小JTname.setBounds(100,40,170,25);JLpwd.setBounds(40,80,60,25);JTpwd.setBounds(100,80,170,25);JBsure.setBounds(110,130,60,25);JBexit.setBounds(180,130,60,25);this.setLayout(null);this.add(JLname);this.add(JTname);this.add(JLpwd);this.add(JTpwd);this.add(JBsure);this.add(JBexit);JBsure.addActionListener(newActionListener(){//添加按钮监听publicvoidactionPerformed(ActionEvent arg0){dispose();loginCheak(JTname,JTpwd);}});JBexit.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvent e){System.exit(0);}});}publicvoidloginCheak(JTextField tf,JPasswordField pf){String username = tf.getText();String password =String.valueOf(pf.getPassword());System.out.println(password);//输出填写的密码if("".equals(username)){//判断用户名是否为空JOptionPane.showMessageDialog(null,"账号不能为空","Warning",JOptionPane.WARNING_MESSAGE);return;}if("".equals(password)){//判断密码是否为空JOptionPane.showMessageDialog(null,"密码不能为空","Warning",JOptionPane.WARNING_MESSAGE);return;}try{newMyConnection();Connection con =MyConnection.getConnection();//调用MyConnection.java中的getConnection方法Statement stmt=con.createStatement();String sql ="select * from account where name = '"+ username +"' and password = '"+ password +"'";//SQL选择查询语句ResultSet rs=stmt.executeQuery(sql);if(rs.next()){JOptionPane.showMessageDialog(this,"成功登录","提示",JOptionPane.INFORMATION_MESSAGE);this.dispose();}else{JOptionPane.showMessageDialog(this,"帐号或密码错误!","警告",JOptionPane.WARNING_MESSAGE);
                pf.requestFocus();}}catch(Exception e){
            e.printStackTrace();}}publicstaticvoid main (String[]args){//主函数Login ft=newLogin("欢迎登陆");
        ft.setSize(340,240);
        ft.setLocation(300,300);
        ft.setVisible(true);
        ft.setResizable(false);}}

3.2 效果展示

  1. 登录界面展示,用户名和密码依次输入 张三、0000:在这里插入图片描述
  2. 点击确定,提示登录成功:在这里插入图片描述
  3. 重新运行,输入张三和一个错误密码,提示登录失败:在这里插入图片描述
  4. 直接点击登录,提示用户名不能为空:在这里插入图片描述

写在最后

🌟以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
在这里插入图片描述

共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”
在这里插入图片描述


本文转载自: https://blog.csdn.net/m0_60353039/article/details/125163566
版权归原作者 小黄小黄不再迷茫 所有, 如有侵权,请联系我们删除。

“如何通过JDBC访问MySQL数据库?手把手实现登录界面(图解+完整代码)”的评论:

还没有评论