java&数据库大作业基础教学

本文章为bilibili 视频的辅助文档,视频链接

https://www.bilibili.com/video/BV17F411a7rz?p=7

1、mysql环境搭建

2、数据库创建

3、项目编写

导入jar包

  1. 项目下创建libs文件夹
  2. 将jar包粘贴上去
  3. 右键–>build path -->add to build path

数据库映射类

package vo;
/**
 * 映射数据库图书表
 *
 */
public class Book {

	private Integer bookId;
	private String bookName;
	private String authorName;
	private Double price;

	public Book(Integer bookId, String bookName, String authorName, Double price) {
		super();
		this.bookId = bookId;
		this.bookName = bookName;
		this.authorName = authorName;
		this.price = price;
	}
	public Book() {
	}

	public Integer getBookId() {
		return bookId;
	}

	public void setBookId(Integer bookId) {
		this.bookId = bookId;
	}

	public String getBookName() {
		return bookName;
	}

	public void setBookName(String bookName) {
		this.bookName = bookName;
	}

	public String getAuthorName() {
		return authorName;
	}

	public void setAuthorName(String authorName) {
		this.authorName = authorName;
	}

	public Double getPrice() {
		return price;
	}

	public void setPrice(Double price) {
		this.price = price;
	}

	@Override
	public String toString() {
		return "Book [bookId=" + bookId + ", bookName=" + bookName + ", authorName=" + authorName + ", price=" + price
				+ "]";
	}
}

加载驱动

  • 利用反射,加载***com.mysql.jdbc.Driver***驱动类
Class.forName("com.mysql.jdbc.Driver");
加载driver类的原因:
原因
  • 需要在调用***DriverManager***的***getConnection***方法之前,保证相应的Driver类已经被加载到jvm中
具体细节
  • jdk文档对Driver的描述中有这么一句:
    当一个 Driver 类被加载时,它应该创建一个它自己的实例并将它注册到DriverManager

  • ***com.mysql.jdbc.Driver***继承了***java.sql.Driver***接口

  • 在***jdbc.driver***的静态块里,已经new了一个Driver对象并且注册到***DriverManager***中

 static
 {
    try
    {
      DriverManager.registerDriver(new Driver());
    } catch (SQLException E) {
      throw new RuntimeException("Can't register driver!");
   	}
}

注册了之后,即可使用***DriverManager***中的***getConnection***方法

获取连接

	private static String url="jdbc:mysql://localhost:3306/book";
	private static String user="root";
	private static String password="root";
	
	Connection 	conn = DriverManager.getConnection(url, user, password);

操作数据库

Statement介绍(sql包下)
  • 用于执行静态SQL语句并返回其生成的结果的对象。
主要函数
  • ***excute(String sql)***:执行给定的SQL语句,一般不用
  • ***executeUpdate(String sql)***:执行给定的SQL语句,这可能是INSERT , UPDATE ,或DELETE语句,或者不返回任何内容,如SQL DDL语句的SQL语句。
  • ***executeQuery(String sql)***:执行给定的SQL语句,返回单个***ResultSet***对象。
查询函数
	public static void select() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		Connection conn=null;
		Statement stat=null;
		ResultSet rs=null;
		try {
				conn = DriverManager.getConnection(url, user, password);
				 String sql = "SELECT * FROM book";
				 stat = conn.createStatement();
				 rs=stat.executeQuery(sql);
				 
				 //遍历结果集
				 while(rs.next()) {
					 String bookId = rs.getString("book_id");
					 String bookName = rs.getString("book_name");
					 String authorName = rs.getString("author_name");
					 String price = rs.getString("price");
					 
					 Book book = new Book(Integer.parseInt(bookId), bookName, authorName, Double.parseDouble(price));
					 System.out.println(book);
				 }
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			
			try {
				stat.close();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
增加、删除、更新函数
PreparedStatement介绍
public interface PreparedStatement extends Statement
  • 表示预编译的SQL语句的对象。
  • SQL语句已预编译并存储在PreparedStatement对象中。 然后可以使用该对象多次有效地执行此语句。
占位符
  • 用在sql语句中,具体的数据用问号代替,在sql语句外将函数传入的对象中的属性提取出来并赋值到相应的占位符中
String sql = "delete from book where book_id=?";
stat = conn.prepareStatement(sql);
//设置占位符
stat.setInt(1, book.getBookId());
stat.executeUpdate();
代码
public static void update(Emp emp){
	//加载驱动
			try {
				Class.forName("com.mysql.jdbc.Driver");
			} catch (ClassNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//获取数据库连接
			Connection conn = null;
			PreparedStatement stat = null;
			try {
				conn = DriverManager.getConnection(url, user, password);
				//操作数据库
				String sql = "update emp set ename=?,job=?,sex=?,birthday=?,sal=? where empid=?";
				stat = conn.prepareStatement(sql);
				stat.setString(1, emp.getEmpname());
				stat.setString(2, emp.getJob());
				stat.setString(3, emp.getSex());
				stat.setDate(4, new Date(emp.getBirthday().getTime()));
				stat.setDouble(5, emp.getSal());
				stat.setInt(6, emp.getEmpid());
				stat.executeUpdate();
				
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (NumberFormatException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} finally {
				
				if(stat!=null){
					try {
						stat.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				//关闭连接
				if(conn!=null){
					try {
						conn.close();
					} catch (SQLException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
			}
}

3.7、主函数逻辑编写

  • 21
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
考试管理系统是一种用于管理和组织考试过程的软件系统,其目的是提供一个简单易用的平台,方便教师进行试卷管理、考试安排和成绩统计。本系统使用Java语言编写,并采用GUI界面设计。 该系统主要有以下几个功能模块: 1. 学生管理模块:教师可以输入、修改和删除学生信息,包括学生的姓名、学号、班级等。 2. 试卷管理模块:教师可以添加、编辑和删除试卷题目,包括选择题、填空题等,还可以设置题目的分值和答案。 3. 考试安排模块:教师可以创建考试安排,指定考试时间和地点,并选择需要参加考试的学生。 4. 考试过程模块:学生登陆系统后可以查看自己的考试安排,进入考试界面进行答题,系统会自动计算得分并保存。 5. 成绩统计模块:教师可以查看学生的考试成绩,并进行排名和统计分析,以便更好地评估学生的学习情况。 该系统的优点在于使用了GUI界面设计,使得操作更加简单直观,同时由于没有使用数据库,系统的安装和使用也更加便捷。此外,该系统还具有良好的扩展性,可以根据实际需要进行功能的添加和修改。 总之,本次Java大作业——考试管理系统是一个基于GUI界面的简单易用的系统,通过该系统的设计与实现,可以提高教师对考试过程的管理能力,方便学生进行考试,同时还能够进行成绩统计和分析,总体上有利于提高教学质量。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值