初始MVC初识jdbc

1.使用自己的话表述MVC.
MVC是Java设计模式中的一种以我个人的话来说,V代表着视图 也就是用户能看到的通过V(视图)我们能知道信息可以直观的了解到信息也就是页面(jsp或者html)再说C(控制) C是各种信息交互的地方C指明了什么信息要到哪里去拿或者把信息传给V 是中间的那一层 M(模型) 是封装了那些信息的一层 。
2.掌握JDBC的基本操作。
对book表中的数据进行增删改查;

我使用的是 工厂链接+接口+实现类+实体类+测试类实现

首先先建立一个表book表 里面的字段有 id int,bookName varchar,price int,description varchar
然后再通过jdbc对该表进行操作
1.导入炸药包(Jar)这个是必须的 不管操作什么数据库都要先导入jar包
在这里插入图片描述
2.写出实体类里面有私有属性构造方法以及get set方法。

public class Book {

private int id;
private String bookNmae;
private int price;
private String description;

public Book(){
	
}

public int getId() {
	return id;
}

public void setId(int id) {
	this.id = id;
}

public String getBookNmae() {
	return bookNmae;
}

public void setBookNmae(String bookNmae) {
	this.bookNmae = bookNmae;
}

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;
}


}

使用jdbc技术

*使用jdbc技术时候需要四个步骤
1.加载数据库驱动 2.建立数据库连接 3.发送sql语句并且返回结果集 4.关闭资源

贴上代码

  • 数据库连接工厂

*/
import java.sql.Connection;
import java.sql.DriverManager;

public class Fatory {

private static String dburl  = "jdbc:mysql://localhost:3306/zuoye?useUnicode=true&characterEncoding=UTF-8";
private static String dbuname = "root";
private static String dbupassword = "123456";

synchronized public static Connection getConnection() {
	try {
		Class.forName("com.mysql.jdbc.Driver");
		return DriverManager.getConnection(dburl,dbuname,dbupassword);
		
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
		return null;
	}
}

}
/**

  • 接口
  • @author 陈福桔

*/
public interface Bookdao {
public void addBook(Book book);
public void delBook(int id);
public void updateBook(Book book);
public Book findBookById(int id);

}

/**

  • 实现类
    */
    import java.nio.channels.ConnectionPendingException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ResourceBundle;
    import java.util.spi.ResourceBundleControlProvider;
    import javax.annotation.Resource;

import disici.Fatory;
import disici.Book;
import disici.Bookdao;

public class BookdaoImpl implements Bookdao {

@Override
public void addBook(Book book) {
	// TODO Auto-generated method stub
	Connection conn=null;  //数据库连接
	PreparedStatement ps=null;//与编辑对象
	ResultSet rs=null;//结果集
	try {
		conn=Fatory.getConnection();
		String sql="insert into book values(?,?,?,?)";
		ps=conn.prepareStatement(sql);
		ps.setInt(1, book.getId());
		ps.setString(2, book.getBookNmae());
		ps.setInt(3, book.getPrice());
		ps.setString(4, book.getDescription());
		ps.executeUpdate();
		
		ps.close();
		conn.close();
	
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}finally {
		System.out.println("添加成功"+book.getId()+book.getBookNmae()+book.getPrice()+book.getDescription());
		
	}
	
	
}

@Override
public void delBook(int id) {
	// TODO Auto-generated method stub
	Connection conn=null;  
	PreparedStatement ps=null;
	ResultSet rs=null;
	try {
		conn=Fatory.getConnection();
		String sql="delete from book where id=?";
		ps=conn.prepareStatement(sql);
		ps.setInt(1, id);
		ps.executeUpdate();
		ps.close();
		conn.close();
		System.out.println("删除成功");
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
	
}

@Override
public void updateBook(Book book) {
	// TODO Auto-generated method stub
	Connection conn=null; //声明数据库连接对象
	PreparedStatement ps=null;//预编译 new的时候为真,
	ResultSet rs=null;//定义结果集对象 rs
	try {
		conn=Fatory.getConnection();
		String sql="update book set id=?,BookName=?,price=?,description=? where id=?";
		ps=conn.prepareStatement(sql);
		ps.setInt(1, book.getId());
		ps.setString(2, book.getBookNmae());
		ps.setInt(3, book.getPrice());
		ps.setString(4, book.getDescription());
		ps.setInt(5, 111);//根据id修改哈
		ps.executeUpdate();
		ps.close();
		conn.close();
		System.out.println("修改后的信息为"+book.getId()+book.getBookNmae()+book.getPrice()+book.getDescription());
		
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
}

@Override
public Book findBookById(int id) {
	// TODO Auto-generated method stub

	Connection conn=null; //声明数据库连接对象
	PreparedStatement ps=null;//预编译 new的时候为真,
	
	Book book=new Book();
	try {
		conn=Fatory.getConnection();
		String sql="select * from book where id=?";
		ps=conn.prepareStatement(sql);
		ps.setInt(1, id);
		ResultSet rs = ps.executeQuery();
		while (rs.next()) {
		book.setId(rs.getInt("id"));
		book.setBookNmae(rs.getString("bookName"));
		book.setPrice(rs.getInt("price"));
		book.setDescription(rs.getString("description"));
		System.out.println("查询id为"+book.getId()+book.getBookNmae()+book.getDescription()+book.getId()+book.getPrice());
		}
		
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
	
	
	return book;
}

}

下面就是Test测试类测试结果
/**

  • 测试类
    /
    import disici.
    ;
    public class Test {

    public static void main(String args[]){
    Book book=new Book();
    book.setId(887);
    book.setBookNmae(“高数挂科”);
    book.setPrice(502);
    book.setDescription(“让你受尽折磨+N”);
    BookdaoImpl impl=new BookdaoImpl();
    //impl.addBook(book);

     //impl.delBook(book.getId());
     //impl.updateBook(book);
     impl.findBookById(334);
     // impl.updateBook(book);
    

    }

}

执行add方法结果
在这里插入图片描述
在这里插入图片描述
添加成功

执行del
在这里插入图片描述
在这里插入图片描述
成功删除了ID为123的信息

执行查询 //在这里插入图片描述
根据id查询信息

执行修改
在这里插入图片描述
在这里插入图片描述
把ID为334的字段给修改了

总结
踩了小坑
写sql语句时候多打了一个一定要注意语句的正确
在这里插入图片描述
2.数据库乱码问题
在这里插入图片描述
乱码请在 conn 连接那加上代码 useUnicode=true&characterEncoding=UTF-8
关于空指针异常 1.查看自己的参数有没有传递2.查看传递的参数名字是否相同
关于PreparedStatement与Statement
使用PreparedStatement 可以预防sql注入而且PreparedStatement比Statement更为高效
在使用编写sql语句后要紧跟 conn.prepareStatement(sql); 不然忘了的话空指针找半天找不到

就这样把。大米饭万岁!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值