老图搬砖day07——MySQL

本文介绍了使用PowerDesigner进行数据库建模,详细讲述了MySQL的安装过程,包括环境变量配置和字符集修改。接着,通过Navicat 8 for MySQL作为图形界面工具进行数据库管理。此外,还探讨了JDBC在Java中的应用,展示了如何建立数据库连接并执行基本操作。最后,给出了一个简单的Java学生信息系统的代码实现和运行结果。
摘要由CSDN通过智能技术生成

注:之后的小组开发工作

软件开发生命周期:

  1. 需求分析
    规范需求分析说明书
  2. 软件原型设计
    Axure RP 8
    v1->审核–>v2…
  3. 静态网页制作
    HBuilder(HTML,CSS,JS,jQuery,Bootstrap)
  4. 数据库建模
    PowerDesigner
  5. 后台功能开发实现
  6. 前端相应的表单测试,jQuery+Ajax
  7. 测试/发布
    人员分工:DEV,FE,AQ*

7.1PowerDesigner新建模型

选择MySQL5
新建表作为人员表在这里插入图片描述
var(10)固定长度字符,varchar()可变长度字符
操作提示:

  1. 设置每个表的主键,并且可以设置自动增长;
  2. 外键可以自动生成。

7.2 MySQL

7.2.1 MySQL安装

首先直接使用老师给的安装包进行安装,上课的时候没有听,直接next一顿操作,中间要填一个密码,密码要记住,之后每次连接数据库的时候都要用。
安装之后要验证安装
1.添加环境变量
我的win10桌面上没有放此计算机,所以点开设置——系统——关于——高级系统设置——环境变量,在系统变量和用户变量的path中统一添加安装的bin文件夹路径
在这里插入图片描述
2、注意一下,由于默认的字符集为拉丁英文Latin1,要将它修改为Iso-8859-1 英文字符,打开C:\Program Files\MySQL\MySQL Server 5.5\ my.ini配置文件
在这里插入图片描述
在这里插入图片描述
将这两处的latin1修改为utf8
3、启动cmd

C:\Users\Administrator>net start mysql
请求的服务已经启动。

请键入 NET HELPMSG 2182 以获得更多的帮助。
C:\Users\Administrator>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.20 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

显示如上则连接成功。之后可以在这里进行数据库的增删查改,表的增删查改等操作。

7.2.2 Navicat 8 for MySQL

有时直接在cmd中进行操作会比较慢,且对新手也不太友好,所以在这里我们安装Navicat 8 for MySQL进行操作
界面如下
在这里插入图片描述
首次连接注意验证账户密码
创建数据库
在这里插入图片描述
也可以通过console 使用命令来操作MySQL数据库

7.3 JDBC

Java 数据库DB(DataBase)连接 Connectivity

DEMO:

  1. 创建项目 Java Project
  2. 加载驱动包 *.jar [将mysql的jar包文件,复制到 Java Project中]
    在这里插入图片描述
    建立连接
package demo;

import java.sql.*;

public class DBUtil {
	public static Connection getConnection(){
		//获取connection对象
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("未找到驱动类!");
		}
		//url --统一资源定位符 主协议:子协议://主机IP:端口号/数据库名
		try {
			String url = "jdbc:mysql://localhost:3306/demo2";
			conn = DriverManager.getConnection(url, "root","123456");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("数据库服务器异常,数据连接错误!");
		}
		
		return conn;
	}
	
	public static void main(String[] args){
		Connection conn = DBUtil.getConnection();
		System.out.println(conn != null ? "连接成功" : "连接失败");
	}
}

在这里插入图片描述
增加对象

		try {
			String sql = "insert into info(Id,Name) values('12','张三')";
			
			Statement stmt = conn.createStatement();
			int rows = stmt.executeUpdate(sql);
			if(rows>0){
				System.out.println("添加成功!");
			}else{
				System.out.println("添加失败!");
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

7.4 用Java做一个简单的学生信息系统

7.4.1 代码部分

可以实现对数据库的增删查改

package sy.demo.util;

import java.sql.*;


public class DBUtil {
	
	public static Connection getConnection(){
		//获取connection对象
		Connection conn = null;  //连接对象
		try {
			//加载驱动包中的驱动类名
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("未找到驱动类!");
		}
		//url --统一资源定位符 主协议:子协议://主机IP:端口号/数据库名
		//通过驱动管理器类获取连接对象
		try {
			String url = "jdbc:mysql://localhost:3306/demo";
			conn = DriverManager.getConnection(url, "root","123456");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("数据库服务器异常,数据连接错误!");
		}
		
		return conn;
	}
	
	public static void closeAll(ResultSet rs,Statement stmt,PreparedStatement pstmt,Connection conn){
		
		try {
			if(rs != null){
				rs.close();
			} 
			
			if(stmt != null){
				stmt.close();
			} 
			if(pstmt != null){
				stmt.close();
			}
			if(conn != null){
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args){
		Connection conn = DBUtil.getConnection();
		System.out.println(conn != null ? "连接成功!" : "连接失败!");
	}
	

}

package sy.demo.entity;

public class Inf {
	private int id;
	private String name;
	private int age;
	
	
	public Inf() {
		
	}
	
	public Inf(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	public Inf(int id, String name, int age) {
		
		this.id = id;
		this.name = name;
		this.age = age;
	}

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString(){
		return this.id+"\t"+this.name+"\t"+this.age;
	}
}

package sy.demo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import sy.demo.entity.Inf;
import sy.demo.util.DBUtil;

public class InfDao {
	private Connection conn = null;  //连接对象
	private Statement stmt = null;   //语句对象
	private PreparedStatement pstmt = null;  //预编译语句对象
	private ResultSet rs = null;    //结果集对象
	
	public Inf queryInfByld(int id) {
		Inf inf = null;
		try {
			String sql="select * from inf where id="+id;
			conn = DBUtil.getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			if(rs.next()) {
				inf = new Inf();
				inf.setId(rs.getInt(1));
				inf.setName(rs.getString(2));
				inf.setAge(rs.getInt(3));
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}finally {
			DBUtil.closeAll(rs, stmt, null, conn);
		}
		return inf;
	}
	
	public List<Inf>  queryInfList(){
		List<Inf> infList = new ArrayList<Inf>();
		try {
			String sql ="select * from inf";
			conn = DBUtil.getConnection();
			stmt = conn.createStatement();
			rs = stmt.executeQuery(sql);
			while(rs.next()) {
				Inf inf = new Inf();
				inf.setId(rs.getInt(1));
				inf.setName(rs.getString(2));
				inf.setAge(rs.getInt(3));
				
				infList.add(inf);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}finally {
			DBUtil.closeAll(rs, stmt, null, conn);
		}
		return infList;
	}
	public boolean addInf(Inf inf) {
		
		try {
			String sql = "insert into inf(name,age) values('"+inf.getName()+"',"+inf.getAge()+")";
			conn = DBUtil.getConnection();
			stmt = conn.createStatement();
			int rows=stmt.executeUpdate(sql);
			if(rows>0){
				return true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			DBUtil.closeAll(rs,stmt,null,conn);
		}
	
		return false;
	}

	public boolean modiQuery(Inf inf) {
		try {
			String sql = "update inf set name='"+inf.getName()+"',age="+inf.getAge()+" where id="+inf.getId();
			conn = DBUtil.getConnection();
			stmt = conn.createStatement();
			int rows=stmt.executeUpdate(sql);
			if(rows>0){
				return true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			DBUtil.closeAll(rs,stmt,null,conn);
		}
		return false;
	}

	public boolean delQuery(int id) {
		try {
			String sql = "delete from inf where id="+id;
			conn = DBUtil.getConnection();
			stmt = conn.createStatement();
			int rows=stmt.executeUpdate(sql);
			if(rows>0){
				return true;
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			DBUtil.closeAll(rs,stmt,null,conn);
		}
		return false;
	}
}

package sy.demo.biz;

import java.util.Scanner;
import java.util.List;

import sy.demo.dao.InfDao;
import sy.demo.entity.Inf;

public class Biz {
	Scanner sc = new Scanner(System.in);
	private InfDao infDao = new InfDao();

	//根据编号查询单个数据
	public int querySingle() {
		int single1=1;
		while(single1==1) {
			System.out.print("请输入你要查询的编号:");
			int id = sc.nextInt();
				Inf inf =infDao.queryInfByld(id);
				if(inf!=null) {
					System.out.println(inf);
					System.out.println("————————————————————————————————");
					System.out.println("继续查询(1),返回首页(2)");
				}else {
					System.out.println("————————————————————————————————");
					System.out.println("你输入的编号不存在,重新查询(1),返回首页(2)");
					System.out.println("请选择");
				}
				single1=sc.nextInt();
			}
		return single1;
	}
	//查询列表
	public int queryInfList() {
		int list1=1;
		while(list1==1) {
			List<Inf> infList = infDao.queryInfList();
			for(Inf inf : infList) {
				System.out.println(inf);
			}
			System.out.println("————————————————————————————————");
			System.out.println("重新查询(1),返回首页(2)");
			System.out.println("请选择");
			list1=sc.nextInt();
		}
		return list1;		
	}
	//增加
	public int add() {
		int add1 = 1;
		int add2 = 2;
		String name = null;
		int age = 0;
		while(add1==1) {
			while(add2==2){
				System.out.println("请输入学生的姓名:");
				name = sc.next();
				System.out.println("请输入学生的年龄:");
				age = sc.nextInt();
				System.out.println("信息录入完成,确定(1),重新输入(2):");
				System.out.println("请选择");
				add2 = sc.nextInt();
			}
			Inf inf = new Inf(name,age);		
		boolean flag = infDao.addInf(inf);				
		System.out.println(flag ?"数据添加成功,继续添加(1),返回首页(2)" : "数据添加失败,继续添加(1),返回首页(2)");
		System.out.println("请选择");
		add1 = sc.nextInt();
		add2 = 2;
		}
		return add1;
	}
	//修改
	public int modify() {
		int modify1=1;
		int modify2=2;
		String name = null;
		int age = 0;
		while(modify1==1) {
			System.out.println("请输入你要修改的学生的编号:");
			int id = sc.nextInt();
			System.out.println("******************************");
			Inf infOld =infDao.queryInfByld(id);
			if(infOld==null) {
				System.out.println("该编号不存在!重新输入(1),返回主页(2)");
				modify1=sc.nextInt();
			}
			else{
				System.out.println(infOld);
				while(modify2==2) {
				System.out.println("输入新姓名:");
				name = sc.next();
				System.out.println("输入新年龄:");
				age = sc.nextInt();
				System.out.println("修改数据已接收,确定修改(1),重新输入(2)");
				System.out.println("请选择");
				modify2=sc.nextInt();
				}
				Inf inf = new Inf(id,name,age);
				boolean flag = infDao.modiQuery(inf);
				System.out.println(flag ?"数据修改成功,继续修改(1),返回首页(2)" : "数据修改失败,继续修改(1),返回首页(2)");
				System.out.println("请选择");
				modify1 = sc.nextInt();
				modify2 = 2;
			}
		}
		return modify1;
	}
	
	public int del() {
		int del1=1;
		while(del1==1) {
			System.out.println("请选择你要删除的编号:");
			int id = sc.nextInt();
			boolean flag = infDao.delQuery(id);
			System.out.println(flag ? "删除成功,继续删除(1),返回首页(2)" : "删除失败,重新输入(1),返回首页(2)");
			System.out.println("请选择");
			del1=sc.nextInt();
		}
		return del1;
	}
	
}

package sy.demo;

import java.util.*;

import sy.demo.*;
import sy.demo.biz.Biz;



public class Prepare {
	
	public void New() {
		int flag  = 2;
		
		Scanner sc = new Scanner(System.in);
		
		while(flag==2) {
			System.out.println("**************************************************");
			System.out.println("********************学生信息管理系统*******************");
			System.out.println("*                                                *");
			System.out.println("*                                                *");
			System.out.println("**************************************************");
			System.out.println("*                    1、添加数据                                                            *");
			System.out.println("*                    2、修改数据                                                            *");
			System.out.println("*                    3、查询数据                                                            *");
			System.out.println("*                    4、删除数据                                                            *");
			System.out.println("*                    5、退出系统                                                             *");
			System.out.println("*                                                *");
			System.out.println("**************************************************");
			System.out.println("请选择你要进行的操作(请输入对应的编号):");
			int i = sc.nextInt();
			Biz biz = new Biz();
			switch (i) { 
			case 1:
				flag=biz.add();
				break;
			case 2:
				flag=biz.modify();
				break;
			case 3:
				System.out.println("请选择你要查询的方式 查询所有数据(1),根据编号查询(2)");
				int choose = sc.nextInt();
				if(choose==1) {
					flag=biz.queryInfList();
				}else {
					flag=biz.querySingle();
				}
				break;
			
			case 4:
				flag=biz.del();
				break;
			
			case 5:
				System.out.println("系统已停止!");
				System.exit(0);
				
		//	default:
		//		System.out.println("指令错误,请重新输入!");
		//		flag=2;
		//		break;
			}
		}
		
	}
}

package sy.demo;

import java.util.*;

import sy.demo.*;
import sy.demo.biz.Biz;



public class Strat {
	
	public static void main(String[] args) {
	Prepare pre = new Prepare();
	pre.New();
	}
}

7.4.2 运行结果

查询所有:
在这里插入图片描述
添加学生:
在这里插入图片描述
添加后查询:
在这里插入图片描述
修改数据:
在这里插入图片描述
修改后根据学号查询:
在这里插入图片描述
查询学号不存在:
在这里插入图片描述
删除学号不存在:
在这里插入图片描述
删除成功:
在这里插入图片描述
删除后查询:
在这里插入图片描述
退出系统:
在这里插入图片描述

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值