控制层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. monkey测试===monkeyrunner测试教程(2)

    我先引入一段代码: #test.py from com.android.monkeyrunner import MonkeyRunner as mr device=mr.waitForConnecti ...

  2. selenium 点击浏览器按钮

    利用以下的方法,selenium 也可以模拟点击各种浏览器按钮:browser.back()点击“返回”按钮.browser.forward()点击“前进”按钮.browser.refresh()点击 ...

  3. 创建.dat文件(转载)

    比较有用的东比较有用的东西 首先,批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的 ...

  4. vue的data用到this问题

    问题:在vue中用vue-awesome-swiper,在data中初始化,用到swiper一个方法onTap,然后再调vue的一个函数,用到this,可是... data() { return { ...

  5. 取消myeclipse自动进入workspace

    进入到C:\Program Files\MyEclipse 6.5\eclipse\configuration\.settings目录, 修改SHOW_WORKSPACE_SELECTION_DIAL ...

  6. 多路复用I/O模型select() 模型 代码实现

    多路复用I/O:  socket编程之select(),poll(),epoll() 代码: client.c #include <stdio.h> #include <sys/ty ...

  7. display:flex代替float

    昨天做一个css的东西,在开始用js的时候才发现被float占位了 因为float浮动起来了,我清除了浮动,但是还是占位 然后我同事就告诉我其实可以不用float来左右浮动 在父元素上用display ...

  8. poj 1088(记忆化搜索)

    滑雪 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 88560   Accepted: 33212 Description ...

  9. Mysql用户管理(远程连接、授权)

    1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Passw ...

  10. js表单提交回调函数

    在研究表单的时候发现一个有意思的东西——在表单提交的时候如何保证数据全部提交完毕才会清空? 我们常用的<input type="reset" value="重置&q ...