控制层Action接受从模型层DAO传来的数据,显现在视图层上。

package Action;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement; import DAO.StuDAO;
import Model.Student;
import Util.DBUtil; public class StuAction { public static void main(String args[]) throws Exception {
Connection conn = DBUtil.getConnection();
Statement stmt = conn.createStatement();
// ResultSet rs = stmt.executeQuery("select * from stuInfoTable");
//
//// while(rs.next()) {
//// System.out.println(rs.getInt(1)+" "+ rs.getString(2)+" "+rs.getString(3));
//// }
//不是直接 Student stu = null,这样试空指针
Student stu = new Student();
stu.setStuID(5);
stu.setName("王五");
stu.setSex("女");
StuDAO sd = new StuDAO();
//sd.addStu(stu); // stu.setName("马六");
// stu.setSex("男");
// sd.updateStu(stu); sd.delStu(stu.getStuID()); } //直接调用StuDAO的方法来更新 增加 删除
public void add(Student stu) throws Exception {
StuDAO sd = new StuDAO();
sd.addStu(stu);
}
//通过控制层来 链接视图层
}
package 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 Model.Student;
import Util.DBUtil; public class StuDAO {
Connection conn = DBUtil.getConnection();
//一个一个传参数很麻烦 直接传一个对象
//如果stuID设置了自动递增 就不需要插入了
public void addStu(Student stu) throws Exception {
String sql ="" + "insert into stuInfoTable" + "(" +
" stuID,name,sex"+")" + "values(" + "?,?,?)";
//这样的语句可以预加载在服务器里 execute后才会执行
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, stu.getStuID());
ps.setString(2, stu.getName());
ps.setString(3, stu.getSex());
ps.execute();
}
//和增加的逻辑一直 所以直接复制上述代码 然后修改sql语句
//可以直接传过来stuID,但是这样需要根据ID去找Student
public void updateStu(Student stu) throws Exception {
//不加where语句的话 所有的都会更新 //注意下面的语句 一定要有空格
String sql ="" + "update stuInfoTable " + "set " +
"name=?,sex=? " + "where "+ "stuID=?";
//这样的语句可以预加载在服务器里 execute后才会执行
PreparedStatement ps = conn.prepareStatement(sql);
//打印出来sql语句 发现 中间少了 空格 然后修改上面的sql语句
System.out.println(sql);
//注意下面的 序号 要和update的序号一致
ps.setString(1, stu.getName());
ps.setString(2, stu.getSex());
ps.setInt(3, stu.getStuID());
ps.execute();
}
public void delStu(int stuID) throws Exception { String sql ="" + "delete stuInfoTable " +"where "+ "stuID=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, stuID);
ps.execute();
}
//查询学生集合
public List<Student> queryStu() throws Exception {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select * from stuInfoTable"); List<Student> stuList = new ArrayList<Student>();
Student stu = null;
while(rs.next()) {
stu = new Student();
stu.setStuID(rs.getInt(1));
stu.setName(rs.getString(2));
stu.setSex(rs.getString(3));
stuList.add(stu);
}
return stuList;
}
//查询一个学生
//应该需要和上面重载的 但是为了做实验 先写完所有方法 再去实现
public Student queryOneStu() {
return null;
} }
package Model;

public class Student {
int stuID;
String name;
String sex;
public int getStuID() {
return stuID;
}
public void setStuID(int stuID) {
this.stuID = stuID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
} }
package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; import DAO.StuDAO;
import Model.Student; public class DBUtil { private static Connection conn; static {
String url = "jdbc:sqlserver://localhost:1433;databasename=stuDB"; try {
// 1.注册驱动\
// Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
// 2.获得数据链接
conn = DriverManager.getConnection(url, "sa", "123456"); } catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static Connection getConnection() {
return conn;
}
}

一个简单的MVC模式练习的更多相关文章

  1. [.NET] 一步步打造一个简单的 MVC 网站 - BooksStore(一)

    一步步打造一个简单的 MVC 网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 简介 主 ...

  2. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(四)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(四) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  3. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  4. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(一) (转)

    http://www.cnblogs.com/liqingwen/p/6640861.html 一步步打造一个简单的 MVC 电商网站 - BooksStore(一) 本系列的 GitHub地址:ht ...

  5. 自己动手写一个简单的MVC框架(第一版)

    一.MVC概念回顾 路由(Route).控制器(Controller).行为(Action).模型(Model).视图(View) 用一句简单地话来描述以上关键点: 路由(Route)就相当于一个公司 ...

  6. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(二)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(二) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore 前: ...

  7. [.NET] 一步步打造一个简单的 MVC 电商网站 - BooksStore(三)

    一步步打造一个简单的 MVC 电商网站 - BooksStore(三) 本系列的 GitHub地址:https://github.com/liqingwen2015/Wen.BooksStore &l ...

  8. 下面的那一个不属于MVC模式中的对象?

    下面的那一个不属于MVC模式中的对象? A. Model B. View C. Collection D. Controller 解答:C MVC是三个单词的缩写,分别为: 模型(Model),视图( ...

  9. 自己动手写一个简单的MVC框架(第二版)

    一.ASP.NET MVC核心机制回顾 在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件. 在这个System.W ...

随机推荐

  1. 设计模式之笔记--原型模式(Prototype)

    原型模式(Prototype) 定义 原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 类图 描述 提供一个克隆自身的接口--Clone方法. 应用场景 ...

  2. #error This file was generated by a newer version of protoc

    pattern@pattern89:/raid0/workspace/houjun/caffe-ssd$ sudo make all -j8PROTOC src/caffe/proto/caffe.p ...

  3. .net设置浏览器的文本模式

    这段时间做个项目,做的时候因为之前习惯了Google的调试方式,所以就一直在google上面调试,今天项目成员大家的部分要整合,就放到ie8下面测试,但是遇到一个问题,就是用ie打开之后文本模式一直是 ...

  4. initWithFrame和initWithCoder的区别

    如果使用了Interface Builder 方式或nib,就不会调用initWithFrame方法,因为nib文件知道怎么初始化了, 但可以使用initWithCoder这一个更深层的init方法来 ...

  5. **极光推送PHP服务器端推送移动设备消息(Jpush V2 api)

    jpush.php  这是推送方法  用到curl发送请求 <?php /** * 极光推送php 服务器端 * @author yalong sun * @Email <syl_ad@1 ...

  6. Linux下安装rz、sz命令(文件上传下载)

    yum install -y lrzsz 说明:rz命令本地上传文件到服务器:sz命令发送文件到本地.

  7. OpenFalcon-SuitAgent

    http://www.cnblogs.com/qianlong2016/archive/2016/09/08/5853899.html

  8. Apache配置基于端口号的虚拟主机 Apache virtual host configuration is based on the port

    有可能只有一个ip出口,但却有多个项目,那么就需要基于端口号架设虚拟主机. Step 1: 检查是否开启 httpd-vhosts.conf apache/conf/httpd.conf文件 # Vi ...

  9. 六十 数据库访问 使用SQLAlchemy

    数据库表是一个二维表,包含多行多列.把一个表的内容用Python的数据结构表示出来的话,可以用一个list表示多行,list的每一个元素是tuple,表示一行记录,比如,包含id和name的user表 ...

  10. CentOS7下Samba的安装与配置

    一.Samba简介 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享 ...