JAVASE练习题10.10(JDBC)

1.使用自己的话表述MVC。

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
Model(模型) - 模型代表一个存取数据的对象或 JAVA POJO。它也可以带有逻辑,在数据变化时更新控制器。

View(视图) - 视图代表模型包含的数据的可视化。

Controller(控制器) - 控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开
MVC
优点:耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利软件工程化管理

缺点:没有明确的定义、不适合小型,中等规模的应用程序、增加系统结构和实现的复杂性、视图与控制器间的过于紧密的连接、视图对模型数据的低效率访问、一般高级的界面工具或构造器不支持模式

2.掌握JDBC的基本操作。

对book表中的数据进行增删改查;
book表:id int,bookName varchar,price int,description varchar
Book类:id int,bookName String ,price int,description String
提示:创建数据库连接工具类DBUtil类。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 
 *<p>Title:DBUtil</p>
 *<p>Description:数据库连接工具类</p>
 * @author 赖文卓
 * @date 2019年10月10日
 */
public class DBUtil {
//类加载只执行一次//静态代码块只执行一次
	static{
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			
			e.printStackTrace();
		}
	} 
	public static Connection getConnection(){
		String sql="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8";
		Connection conn;
		try {
			conn = DriverManager.getConnection(sql,"root","12570071");
			return conn;
		} catch (SQLException e) {
			
			e.printStackTrace();
			return null;
		}
		
	}
	
	public static void close(Connection conn){
		try {
			conn.close();
			
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
	}
	
	public static void close(PreparedStatement ps){
		try {
			ps.close();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		
	}
	public static void close(ResultSet rs){
		try {
			rs.close();
		} catch (SQLException e) {
			
			e.printStackTrace();
		}
		
	}


}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.entity.Book;
import com.util.DBUtil;
/**
 * 
 *<p>Title:Test</p>
 *<p>Description:测试类</p>
 * @author 赖文卓
 * @date 2019年10月10日
 */
public class Test {

	public static void main(String[] args) {
		Book book=new Book();
		book.setId(2);
		book.setBookName("阿甘正传后传");
		book.setPrice(110);
		book.setDescription("非常好看");
//		addbook(book);
//		deleteBookById(2);
//		updateBook(book);
		findBookById(2);
		
		

	}
	/*
	 * 添加书本的方法
	 */
	public static void addbook(Book book){
		Connection conn=DBUtil.getConnection();
		PreparedStatement pstmt;
		try{
			pstmt=conn.prepareStatement("insert into book(id,bookName,price,description) values(?,?,?,?)");
			pstmt.setInt(1, book.getId());
			pstmt.setString(2, book.getBookName());
			pstmt.setInt(3, book.getPrice());
			pstmt.setString(4, book.getDescription());
			int rs=pstmt.executeUpdate();
			System.out.println(rs);
		}catch (SQLException e) {
			e.printStackTrace();
		}
		
	}
	/*
	 * 删除书本的方法(根据id)
	 */
	public static void deleteBookById(int id){
		Connection conn=DBUtil.getConnection();
		PreparedStatement pstmt;
		try{
			pstmt=conn.prepareStatement("delete from book where id=?");
			pstmt.setInt(1, id);
			int rs=pstmt.executeUpdate();
			System.out.println(rs);
		}catch(SQLException e){
			e.printStackTrace();
		}
	}
	/*
	 * 修改书本的方法(根据id)
	 */
	 public static void updateBook(Book book){
		 Connection conn=DBUtil.getConnection();
		 PreparedStatement pstmt;
		 try{
			 pstmt=conn.prepareStatement("update book set bookName=?,price=?,description=? where id=?");
			 pstmt.setString(1, book.getBookName());
			 pstmt.setInt(2, book.getPrice());
			 pstmt.setString(3, book.getDescription());
			 pstmt.setInt(4, book.getId());
			 int rs =pstmt.executeUpdate();
			 System.out.println(rs);
		 }catch(SQLException e){
			 e.printStackTrace();
		 }
	 }
	 /*
	  * 根据书本id查询书本的方法
	  */
	 
	 public static Book findBookById(Integer id){
		 Connection conn=DBUtil.getConnection();
		 PreparedStatement pstmt;
		 Book book=new Book();
		 try{
			 pstmt=conn.prepareStatement("select * from book where id=?");
			 pstmt.setInt(1, id);
			 ResultSet rs=pstmt.executeQuery();
			 while(rs.next()){
				 book.setId(rs.getInt(1));
				 book.setBookName(rs.getString(2));
				 book.setPrice(rs.getInt(3));
				 book.setDescription(rs.getString(4));
				 System.out.println(book);
			 }
	 }catch(SQLException e){
		 
		 e.printStackTrace();
	 }
		return book;
		 
	 }
}

/**
 * 
 *<p>Title:Book</p>
 *<p>Description:实体类</p>
 * @author 赖文卓
 * @date 2019年10月10日
 */
public class Book {
	private int id;
	private String bookName;
	private int price;
	private String description;
	
	public Book(int id,String bookName,int price,String description){
		this.id=id;
		this.bookName=bookName;
		this.price=price;
		this.description=description;
		
	}
	public Book(){
		
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getBookName() {
		return bookName;
	}
	public void setBookName(String bookName) {
		this.bookName = bookName;
	}
	public int getPrice() {
		return price;
	}
	public void setPrice(int price) {
		this.price = price;
	}
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	@Override
	public String toString() {
		return "Book [id=" + id + ", bookName=" + bookName + ", price=" + price + ", description=" + description + "]";
	}
	

}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值