30分钟学会Java连接数据库MySQL

今天我们来学习Java如何连接数据库

这里利用eclipse软件写Java程序

数据库利用MySQL8.0

在这里插入图片描述

1.简单设想

在这里我们初步构建我们所需要的功能以及需要分管的内容

1.1.用户表(user) E - R 图

在这里插入图片描述

1.2.飞行人员表(pilot)E - R 图

在这里插入图片描述

1.3.简易功能 E - R 图

在这里插入图片描述
在构想好我们要实现的功能之后,我们开始写我们的表结构

2.数据库的创建

2.1.cmd窗口建立

2.1.1.连接数据库

连接语句

mysql -h localhost -u root -p123456
在这里插入图片描述

2.1.2.展示当前数据库

show databases
在这里插入图片描述

2.1.3.创建一个新的数据库

create databases fly
在这里插入图片描述

2.1.4.使用fly数据库

use fly
在这里插入图片描述

2.1.5.建立用户表

建立一个用户表,在表中 username 做为主键

create table user(
    -> username varchar(10) not null primary key,
    -> userpassword varchar(10) not null);

效果展示,可见用户表是建立成功的
在这里插入图片描述

2.1.6.建立pilot表

建立一个飞行人员表,在表中 vid 做为主键

create table pilot(
    -> vid varchar(10) not null primary key,
    -> name varchar(10) not null,
    -> sex varchar(10) not null,
    -> age varchar(10) not null,
    -> phone varchar(10) not null);

效果展示,可见飞行人员表是建立成功的
在这里插入图片描述

2.1.7.查看建表是否完整

show tables;
在这里插入图片描述

2.2.MySQL8.0可视化窗口建表

2.2.1.建立数据库fly

鼠标右键点击便可以Create Schema建立一个fly数据库
在这里插入图片描述

2.2.2.建表选择

在这里选择Create Table
在这里插入图片描述

2.2.3.建立用户表

可见在可视化窗口是可以直接写的,是很方便的
在这里插入图片描述

2.2.4.建立pilot表

在这里插入图片描述

2.2.5.对user表录入一组数据

在这里插入图片描述
到了这里我们MySQL数据库的东西就已经写完了

3.利用Eclipse写Java项目

如果想要安装Eclipse程序的小伙伴,我这里写了一篇十分详细的安装教程

Eclipse安装教程及汉化(详解版)

附带汉化和多种JDK同时安装的教程

Eclipse实现安装多个JDK

3.1.建立Java项目

这里项目的名字我们起名为:Pilot_system
在这里插入图片描述

3.2.导入数据库连接驱动

在构建路径里有个添加外部 JAR 选择下载的 8.0.23 驱动

下载地址:Sql驱动

提取码:ca1c
在这里插入图片描述

3.3.写 com.Dao 包

在Dao层里 get 和 set 方法

package com.Dao;

public class UserDao {
	private String username;
	private String password;
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

这里有一个取巧的地方就是你可以鼠标右键选择自动生成 Getter 和 setter 方法
在这里插入图片描述

3.4.写 user 包

3.4.1.录入管理者信息

连接数据库jdbc:mysql://localhost:3306/fly","root","123456"

sql语句录入insert into user values(?,?)

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

public class Alter_user {

	public static void userr(){
		// TODO 自动生成的方法存根
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/fly","root","123456");
			PreparedStatement ps=con.prepareStatement("insert into user values(?,?)");
			@SuppressWarnings("resource")
			Scanner sc=new Scanner(System.in);
			System.out.println("请输入用户名");
			String paid=sc.nextLine();
			ps.setString(1, paid);
			System.out.println("请输入密码");
			String name=sc.nextLine();
			ps.setString(2, name);
			ps.executeUpdate();
			System.out.println("录入成功");
		} catch (ClassNotFoundException | SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}

}

3.4.2.管理者登录认证

sql语句查询select * from user where username=? and userpassword=?

package user;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

import com.Dao.UserDao;

public class Login {
	public boolean Login() {
		try {
		//	Class.forName("com.mysql.cj.jdbc.Driver");
			Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/fly","root","123456");
			PreparedStatement ps=con.prepareStatement("select * from user where username=? and userpassword=?");
			@SuppressWarnings("resource")
			Scanner sc=new Scanner(System.in);
			UserDao ud=new UserDao();
			System.out.println("请输入用户名");
			ud.setUsername(sc.nextLine());
			System.out.println("请输入密码");
			ud.setPassword(sc.nextLine());
			ps.setString(1,ud.getUsername());
			ps.setString(2,ud.getPassword());
			ResultSet rs=ps.executeQuery();//返回结果集
			if(rs.next())
			{
				return true;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}//加载数据库驱动
		return false;
	}
}

3.5.写 Pilot 包

这里我们主要写俩个功能一个是添加数据,一个是查询数据

3.5.1.添加数据 Sert_Pliot

sql语句:insert into pilot values(?,?,?,?,?)

package Pliot;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.Scanner;
public class Sert_Pliot {
	//录入人员
		public static void select(){
				try {
					Class.forName("com.mysql.cj.jdbc.Driver");
					Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/fly","root","123456");
					PreparedStatement ps=con.prepareStatement("insert into pilot values(?,?,?,?,?)");
					@SuppressWarnings("resource")
					Scanner sc=new Scanner(System.in);
					System.out.println("-----------");
					System.out.println("人员基本信息录入");
					System.out.println("-----------");
					System.out.println("请输入人员id");
					String vid=sc.nextLine();
					ps.setString(1, vid);
					System.out.println("请输入姓名");
					String name=sc.nextLine();
					ps.setString(2, name);
					System.out.println("请输入性别");
					String sex=sc.nextLine();
					ps.setString(3,sex);
					System.out.println("请输入年龄");
					String age=sc.nextLine();
					ps.setString(4,age);
					System.out.println("请输入电话号");
					String phone=sc.nextLine();
					ps.setString(5,phone);
					ps.executeUpdate();
					System.out.println("人员录入成功");
				} catch (ClassNotFoundException | SQLException e) {
					e.printStackTrace();
				}//加载数据库驱动
		}
	}

3.5.2.查询数据 Print_Pliot

sql语句:select * from pilot

package Pliot;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import java.sql.ResultSet;

public class Print_Pliot {

	public static void print() {
		// TODO 自动生成的方法存根
		try {
			Class.forName("com.mysql.cj.jdbc.Driver");
			Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/fly","root","123456");
			PreparedStatement ps=con.prepareStatement("select * from pilot");
			ResultSet rs=ps.executeQuery();
			while(rs.next())
			{
				System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getString(3)+"\t"+rs.getString(4)+"\t"+rs.getString(5));
			}
			rs.close();
			ps.close();
			con.close();
		} catch (ClassNotFoundException | SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	}
}

3.6.主函数的实现

在这里我没有写前端,单纯的后端控制台实现

package pilot_root;
import java.util.Scanner;
import Pliot.*;
import user.*;
public class Pilot {
		public static void main(String[] args) {
			Scanner sc=new Scanner(System.in);
			System.out.println("管理员登录");
			Login lg =new Login();
			boolean f=lg.Login();
			LO:while(f)
			{
				System.out.println("-*-*-*-*-*-*-*-*-*-");
				System.out.println("欢迎登录PILOT管理系统!!!");
				System.out.println("-------------------");
				System.out.println("输入1 进入飞行人员管理界面");
				System.out.println("输入2 添加管理员");
				System.out.println("输入0 退出系统");
				System.out.println("---------------");
				String n=sc.nextLine();
				MO:switch(n)
				{
				case "1":
					for(;;)
					{
						System.out.println("-*-*-*-*-*-*-*-*-");
						System.out.println("欢迎进入飞行人员管理界面!!!");
						System.out.println("-----------------");
						System.out.println("输入1 添加人员数据");
						System.out.println("输入2 查看人员数据");
						System.out.println("输入0 退出人员管理界面");
						System.out.println("---------------");
						String m=sc.nextLine();
						switch(m)
						{
						case "1":
							Sert_Pliot.select();break;
						case "2":
							Print_Pliot.print();break;
						case "0":System.out.println("退出人员管理界面成功");break MO;
						}
					}
				case "2":
					Alter_user.userr();break;
				case "0":break LO;
				}
			}
		System.out.println("程序退出成功");
	}
}

4.最后效果

4.1.登录界面

可见在我们输入了用户名和密码是登录成功的

在这里要提前在user表里输入一组数据,因为我设计的这个程序是优先认证用户名和密码的
在这里插入图片描述

4.2.添加数据

在这里插入图片描述

4.3.查询数据

在这里插入图片描述

5.总结

如果你是从最开始看到这里的,那么你就学会了如何利用Java连接数据库

欢迎有问题的小伙伴积极提问

最后附上包的分类,祝各位有所收获
在这里插入图片描述

  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

花落风雪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值