💁 个人主页:黄小黄的博客主页
❤️ 支持我:👍 点赞 🌷 收藏 🤘关注
🎏 格言:一步一个脚印才能承接所谓的幸运本文来自专栏:JDBC从入门到实战
欢迎点击支持订阅专栏 ❤️
写在前面
本文环境:
jdk1.8
、
mysql8.0
、
IntelliJ IDEA 2021.3
与
DataGrip 2021.3
;
撰写本文是由于一位粉丝的求助,凑巧又是笔者本次的实验内容,所以本文只对 JDBC 如何访问数据库作操作性的叙述,并不涉及 JDBC 基础相关内容,有需要请期待专栏后续更新。本文仅供同学们交流学习使用,图片均有水印,请勿 copy,如需转载,欢迎私信。
文章目录
1 操作准备
1.1 导入 Mysql 对应的 jar 包
- 首先进入 Mysql 下载官网: https://www.mysql.com/downloads/,将页面滑动到底端,点击 MySQL Community (GPL) Downloads
- 选择 Connector/J
- 选择 General Availability(GA) Releases,在 Select Operating System 下拉列表选择 Platform Independent,然后选择任意一种压缩包格式的文件 Download,根据提示下载,如果需要其他版本,可以点击 Archives
- 下载完成后进行解压,即可在当前文件夹中看到下载好的 jar 包了。
- 打开 idea 创建一个项目 JDBC 并创建 Moudle JDBCtest,在该模块下创建个目录 lib,并将刚刚下载好的 jar 包拷贝过来。
- 右键将 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代码,代码后附运行结果图,记得将数据库密码(你的密码)位置处改成自己的密码:
package JDBC_test;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.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:同样别忘记将“你的密码”改成你的数据库密码哦!
package JDBC_test2;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/**
* @author 小黄小黄不再迷茫
* @version 1.0
*/publicclassTest2{static Connection conn;static Statement st;publicstaticvoidmain(String[] args){insert();//插入添加记录update();//更新记录数据delete();//删除记录query();//查询记录并显示}//(2)连接的获取,在操作前必须先获取与数据库的连接。privatestatic 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)操作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:同样别忘记将“你的密码”改成你的数据库密码哦!
package JDBC_test3;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;/**
* @author 小黄小黄不再迷茫
* @version 1.0
*/publicclassMyConnection{publicstatic 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;/**
1. @author 小黄小黄不再迷茫
2. @version 1.0
*/publicclassLoginextendsJFrame{private JLabel JLname;private JLabel JLpwd;private JTextField JTname;private JPasswordField JTpwd;private JButton JBsure;private JButton JBexit;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 效果展示
- 登录界面展示,用户名和密码依次输入 张三、0000:
- 点击确定,提示登录成功:
- 重新运行,输入张三和一个错误密码,提示登录失败:
- 直接点击登录,提示用户名不能为空:
写在最后
🌟以上便是本文的全部内容啦,后续内容将会持续免费更新,如果文章对你有所帮助,麻烦动动小手点个赞 + 关注,非常感谢 ❤️ ❤️ ❤️ !
如果有问题,欢迎私信或者评论区!
共勉:“你间歇性的努力和蒙混过日子,都是对之前努力的清零。”
版权归原作者 兴趣使然黄小黄 所有, 如有侵权,请联系我们删除。