💁 个人主页:黄小黄的博客主页 ❤️ 支持我:👍 点赞 🌷 收藏 🤘关注 🎏 格言:一步一个脚印才能承接所谓的幸运 本文来自专栏:JDBC从入门到实战 欢
💁 个人主页:黄小黄的博客主页
❤️ 支持我:👍 点赞 🌷 收藏 🤘关注
🎏 格言:一步一个脚印才能承接所谓的幸运本文来自专栏:JDBC从入门到实战
欢迎点击支持订阅专栏 ❤️
本文环境: jdk1.8
、Mysql8.0
、IntelliJ idea 2021.3
与DataGrip 2021.3
;
撰写本文是由于一位粉丝的求助,凑巧又是笔者本次的实验内容,所以本文只对 JDBC 如何访问数据库作操作性的叙述,并不涉及 JDBC 基础相关内容,有需要请期待专栏后续更新。本文仅供同学们交流学习使用,图片均有水印,请勿 copy,如需转载,欢迎私信。
🐰 打开 datagrip,新建一个查询,通过下面的代码创建一个 myuser 数据库用于 JDBC 访问练习,并创建一个表并录入数据,具体代码及表数据如下:
CREATE DATABASE myuser;USE myuser;CREATE TABLE IF NOT EXISTS account( name VARCHAR(50) PRIMARY KEY NOT NULL , passWord VARCHAR(50) NOT NULL);INSERT INTO account VALUES ('张三', '123');INSERT INTO account VALUES ('李四', '123');
🐻 1. 先创建项目、包及 Test.java,如下图所示:
🐦 2.运行下面的JDBC代码,代码后附运行结果图,记得将数据库密码(你的密码)位置处改成自己的密码:
package JDBC_test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;public class Test { public static void main(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(); } }}
🐰 1. 创建如下包、类:
🐦 2.通过下面代码对 myuser 数据库的 account 表实现增删改查的操作:
Tips:同样别忘记将“你的密码”改成你的数据库密码哦!
package JDBC_test2;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class Test2 { static Connection conn; static Statement st; public static void main(String[] args) { insert(); //插入添加记录 update(); //更新记录数据 delete(); //删除记录 query(); //查询记录并显示 } //(2)连接的获取,在操作前必须先获取与数据库的连接。 private static Connection getConnection() { String driver = "com.mysql.cj.jdbc.Driver"; //若报错使用com.mysql.jdbc.Driver String 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)操作 public static void insert() { 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)操作 public static void update() { 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)操作 public static void query() { 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)操作 public static void 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 表的数据,发现表的数据成功被更新:
🐰 1. MyConnection类,实现数据库连接:
Tips:同样别忘记将“你的密码”改成你的数据库密码哦!
package JDBC_test3;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class MyConnection { public static Connection getConnection() { 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 类,实现登录界面:
package JDBC_test3;import javax.swing.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.sql.Connection;import java.sql.ResultSet;import java.sql.Statement;public class Login extends JFrame{ private JLabel JLname; private JLabel JLpwd; private JTextField JTname; private JPasswordField JTpwd; private JButton JBsure; private JButton JBexit; public Login(String title){ super(title); JLname = new JLabel("用户名:");//设置Label和按钮名 JLpwd = new JLabel("密 码:"); JTname = new JTextField(20); JTpwd = new JPasswordField(20); JBsure = new JButton("确定"); JBexit = new JButton("取消"); 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(new ActionListener(){//添加按钮监听 public void actionPerformed(ActionEvent arg0) { dispose(); loginCheak(JTname,JTpwd); } }); JBexit.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.exit(0); } }); } public void loginCheak(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{ new MyConnection(); 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(); } } public static void main (String []args){//主函数 Login ft=new Login("欢迎登陆"); ft.setSize(340, 240); ft.setLocation(300, 300); ft.setVisible(true); ft.setResizable(false); }}
登录界面展示,用户名和密码依次输入 张三、0000:
点击确定,提示登录成功:
重新运行,输入张三和一个错误密码,提示登录失败:
直接点击登录,提示用户名不能为空:
🌟以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”
来源地址:https://blog.csdn.net/m0_60353039/article/details/125163566
--结束END--
本文标题: 如何通过JDBC访问MySQL数据库?手把手实现登录界面(图解+完整代码)
本文链接: https://lsjlt.com/news/380331.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-10-23
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
2024-10-22
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0