十二周周四学术交流会报告

这是我会的,在十一周搞懂的。

public class Class_Bean {

    private int id;
    private String name;
    private String teacher;
    private String  place;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public String getTeacher() {
        return teacher;
    }
    public void setTeacher(String teacher) {
        this.teacher = teacher;
    }
    public String getPlace() {
        return place;
    }
    public void setPlace(String place) {
        this.place = place;
    }
    }

很简单的javabean,很容易搞懂,存贮取出来的数据方便操作。

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

import com.oracle.jsp.bean.Class_Bean;
import com.oracle.jsp.util.DB;

public class Class_dao {

    // 登录时核对信息
    public Class_Bean checkLogin(String name, String place ,String teacher) {
        Connection conn = DB.getConn();
        Class_Bean classBean = null;
        try {
            /*
             * Statement 是 Java 执行数据库操作的一个重要方法 用于在已经建立数据库连接的基础上 向数据库发送要执行的SQL语句。 Statement对象
             * 用于执行不带参数的简单SQL语句。
             */
            Statement state = conn.createStatement();
            // 查找数据库中与你输入的username匹配的数据
            /*
             *
             * ResultSet:结果集,封装了使用JDBC进行查询的结果 1.调用Statement对象的excuteQuery(sql)方法可以得到结果集
             * 2.ResultSet返回的实际上就是一张数据表,有一个指针 指向数据表的第一样的前面,可以调用next()方法检测下一行是否有效,若有效则返回true
             * ,并且指针下移,相当于迭代器对象的hasNext()和next()的结合体
             * 3.当指针对位到确定的一行时,可以通过调用getXxx(index)或者getXxx(columnName)
             * 获取每一列的值,例如:getInt(1),getString("name") 4.ResultSet当然也需要进行关闭
             *
             */

            ResultSet rs = state.executeQuery("select * from kecheng where name=‘" + name + "‘");
            if (rs.next()) {
                // 如果有结果,是认为是通过验证了
                if (rs.getString("place").equals(place))
                {
                    if(rs.getString("teacher").equals(teacher))
                    {

                    classBean = new Class_Bean();
                    classBean.setId(rs.getInt("id"));
                    classBean.setName(rs.getString("name"));
                    classBean.setPlace(rs.getString("place"));
                    classBean.setTeacher(rs.getString("teacher"));
                    System.out.println(classBean.getName());

                    }

                }
            }
            // 关闭连接
            DB.close(rs, state, conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return classBean;
    }
    public Class_Bean checkLogin(String name) {
        Connection conn = DB.getConn();
        Class_Bean classBean = null;
        try {
            /*
             * Statement 是 Java 执行数据库操作的一个重要方法 用于在已经建立数据库连接的基础上 向数据库发送要执行的SQL语句。 Statement对象
             * 用于执行不带参数的简单SQL语句。
             */
            Statement state = conn.createStatement();
            // 查找数据库中与你输入的username匹配的数据
            /*
             *
             * ResultSet:结果集,封装了使用JDBC进行查询的结果 1.调用Statement对象的excuteQuery(sql)方法可以得到结果集
             * 2.ResultSet返回的实际上就是一张数据表,有一个指针 指向数据表的第一样的前面,可以调用next()方法检测下一行是否有效,若有效则返回true
             * ,并且指针下移,相当于迭代器对象的hasNext()和next()的结合体
             * 3.当指针对位到确定的一行时,可以通过调用getXxx(index)或者getXxx(columnName)
             * 获取每一列的值,例如:getInt(1),getString("name") 4.ResultSet当然也需要进行关闭
             *
             */

            ResultSet rs = state.executeQuery("select * from kecheng where name=‘" + name + "‘");
            if (rs.next()) {
                // 如果有结果,是认为是通过验证了
                    classBean = new Class_Bean();
                    classBean.setId(rs.getInt("id"));
                    classBean.setName(rs.getString("name"));
                    classBean.setPlace(rs.getString("place"));
                    classBean.setTeacher(rs.getString("teacher"));
                    System.out.println(classBean.getName());

            }
            // 关闭连接
            DB.close(rs, state, conn);
        } catch (Exception e) {
            e.printStackTrace();
        }

        return classBean;
    }
    /**
     * 检查是否存在此用户 dada 说实话我感觉没多大用,查询用吧。。嘤嘤嘤
     *
     * @param name
     * @return
     */

    public boolean checkReg(String name, String place ,String teacher) {// 仅仅是查询数据库中是否有这个用户数据
        boolean flag = false;
        // 查询用户是否已存在
        Connection connection = DB.getConn();
        Statement statement = null;
        ResultSet rs = null;
        try {

            statement = connection.createStatement();
            rs = statement.executeQuery("select name from kecheng");
            while (rs.next()) {
                // System.out.println(name);
                // System.out.println(rs.getString("username"));
                if (name.equals(rs.getString("name"))) {
                    flag = true;
                }

            }
            if (flag == false) {
                System.out.println("没有这个数据");
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            DB.close(rs, statement, connection);
        }
        return flag;
    }

    /**
     * 向数据库中添加信息
     */

    public static boolean  add_(String name, String place,String teacher) {
        Connection conn = DB.getConn();
        try {
            Statement state = conn.createStatement();
            System.out.println("添加信息");
            state.execute("insert into kecheng (name,place,teacher) values(‘" + name + "‘,‘" + place+ "‘,‘" + teacher+ "‘)");
            DB.close(state, conn);
        } catch (Exception e) {
            e.printStackTrace();

        }
        return true;
    }

    /**
     * dada 修改信息 调用了存在方法(checkReg)
     */

    public void revise_(String name, String place,String teacher) {
        Connection conn = DB.getConn();
        Statement state = null;

        try {

            if((checkLogin(name, place, teacher))!=null) {
                state = conn.createStatement();
                System.out.println("修改信息");
                state.execute("update kecheng set place=‘" + place + "‘ where name=‘" + name + "‘ ");
                state.execute("update kecheng set teacher=‘" + teacher + "‘ where name=‘" + name + "‘ ");
                System.out.println("修改成功");
                DB.close(state, conn);
            }

        } catch (Exception e) {
            e.printStackTrace();

        }
    }

    /**
     * dada 删除信息
     */
    public void delete_(String name ) {
        Connection conn = DB.getConn();
        Statement state = null;

        try {

                state = conn.createStatement();
                System.out.println("删除信息");
                state.execute("delete from kecheng where name=‘" + name + "‘");
                System.out.println("删除成功");
                DB.close(state, conn);

        } catch (Exception e) {
            e.printStackTrace();

        }

    }
}

dao成,取出数据库数据用的,Connection conn = DB.getConn() 和ResultSet和Statement查明白了,会用了。我这玩意在上周都一个个用控制台试了,弄明白了。

Connection是获得数据库连接的。

student是数据库名字  ?后面有时候需要写,可以解决乱码和一些数据库问题,就比如我这个问题,因为数据库是8.0的,时间对不上,查了一下,必须写这个。

root是我的账号,123456是密码。

Statement向数据库放送语句,基础数据库语句奉上。
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、说明:备份sql server
--- 创建 备份数据的 device
USE master
EXEC sp_addumpdevice ‘disk‘, ‘testBack‘, ‘c:\mssql7backup\MyNwind_1.dat‘
--- 开始 备份
BACKUP DATABASE pubs TO testBack
4、说明:创建新表
create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..)

根据已有的表创建新表:
A:create table tab_new like tab_old (使用旧表创建新表)
B:create table tab_new as select col1,col2… from tab_old definition only
5、说明:删除新表
drop table tabname
6、说明:增加一个列
Alter table tabname add column col type
注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。
7、说明:添加主键: Alter table tabname add primary key(col)
说明:删除主键: Alter table tabname drop primary key(col)
8、说明:创建索引:create [unique] index idxname on tabname(col….)
删除索引:drop index idxname
注:索引是不可更改的,想更改必须删除重新建。
9、说明:创建视图:create view viewname as select statement
删除视图:drop view viewname
10、说明:几个简单的基本的sql语句
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
11、说明:几个高级查询运算词
A: UNION 运算符
UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表。当 ALL 随 UNION 一起使用时(即 UNION ALL),不消除重复行。两种情况下,派生表的每一行不是来自 TABLE1 就是来自 TABLE2。
B: EXCEPT 运算符
EXCEPT 运算符通过包括所有在 TABLE1 中但不在 TABLE2 中的行并消除所有重复行而派生出一个结果表。当 ALL 随 EXCEPT 一起使用时 (EXCEPT ALL),不消除重复行。
C: INTERSECT 运算符
INTERSECT 运算符通过只包括 TABLE1 和 TABLE2 中都有的行并消除所有重复行而派生出一个结果表。当 ALL 随 INTERSECT 一起使用时 (INTERSECT ALL),不消除重复行。
注:使用运算词的几个查询结果行必须是一致的。
12、说明:使用外连接
A、left (outer) join:
左外连接(左连接):结果集几包括连接表的匹配行,也包括左连接表的所有行。
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c
B:right (outer) join:
右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。
C:full/cross (outer) join:
全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所有记录。
12、分组:Group by:
   一张表,一旦分组 完成后,查询后只能得到组相关的信息。
    组相关的信息:(统计信息) count,sum,max,min,avg  分组的标准)
    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据
   在selecte统计函数中的字段,不能和普通的字段放在一起;

13、对数据库进行操作:
   分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后接表明,附加需要完整的路径名
14.如何修改数据库的名称:
sp_renamedb ‘old_name‘, ‘new_name‘
ResultSet:结果集,封装了使用JDBC进行查询的结果,接收获得你想要的数据,例如查找数据

在kecheng表内name栏中“name”(第二的name就是你要查找的东西)。



import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 数据库的工具类
 * @author dada
 *
 */
public final class DB {

    //Connection主要用于连接数据库
    /*
     * Connection 对象的数据库能够提供描述其表、所支持的 SQL 语法、存储过程、此连接功能等等的信息。
     * 此信息是使用 getMetaData 方法获得的。
     */
    private Connection conn;
    //连接数据库
    public static Connection getConn() {
        Connection conn = null;
        String db_url="jdbc:mysql://localhost:3306/student?serverTimezone=UTC";
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(db_url, "root", "123456");
             System.out.println("Success connect MySql server!");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void close(Statement state, Connection conn) {
        if(state!=null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    public static void close(ResultSet rs, Statement state, Connection conn) {
        if(rs!=null) {
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(state!=null) {
            try {
                state.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}

工具类

还有jdbc必须导入才行!

servlet等我说完jsp代码细讲。

先讲一下jsp与servlet的关系,jsp会解析成servlet的。(JSP的本质就是Servlet,JVM只能识别java的类,不能识别JSP的代码,Web容器将JSP的代码编译成JVM能够识别的java类)

可以看这个 http://www.fangbangxin.com/news/show-3701.html

最好看看一下,了解一下jsp与sevlet

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>main</title>
<style>
body{ text-align:center} 

/* css注释:为了观察效果设置宽度 边框 高度等样式 */
</style>
</head>
<body>
<br><br><br><br><br><br><br>
<div>
<input type="button" onclick="test1()" value="add" style="width:200px;height:50px" />
<script >
function test1(){
var url = "add.jsp";
window.location.href= url;
}
</script>
</div>
<br><br><br><br><br>
<div>
<input type="button" onclick="test2()" value="delete" style="width:200px;height:50px"/>
<script >
function test2(){
var url = "delete.jsp";
window.location.href= url;
}
</script>
</div>
<br><br><br><br><br>
<div>
<input type="button" onclick="test3()" value="xiu_gai" style="width:200px;height:50px"/>
<script >
function test3(){
var url = "xiugai.jsp";
window.location.href= url;
}
</script>
</div>
<br><br><br><br><br>
<div>
<input type="button" onclick="test4()" value="cha_zhao" style="width:200px;height:50px"/>
<script >
function test4(){
var url = "chazhao.jsp";
window.location.href= url;
}
</script>
</div>
</body>
</html>

 这是main.jsp,写了四个js函数,跳转到相应的页面。

点击执行函数test2()。

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>add</title>
<style>
body{ text-align:center} 

/* css注释:为了观察效果设置宽度 边框 高度等样式 */
</style>
</head>
<body>
<div>
<form method="post" action="ClassServlet?action=add">
<br><br><br><br><br><br><br>
<div>
  课程名称:<input type="text" name ="name"  value="" />

</div>
<br><br>
<div>
  上课地点:
  <select name =place>
  <option value ="一教">一教</option>
  <option value ="基教">基教</option>
  <option value="二教">二教</option>
  <option value="三教">三教</option>
</select>
</div>
<br><br>
<div>
  任课教师:
  <select name =teacher>
  <option value ="王建民">王建民</option>
  <option value ="刘丹">刘丹</option>
  <option value="刘立嘉">刘立嘉</option>
  <option value="杨子光">杨子光</option>
    <option value="王辉">王辉</option>
</select>
</div>
<br><br>
<div><input type="submit" value="保存"/></div>

</form>
</div>
</body>
</html>

  add函数

form就是传数值用的,action=ClassServlet(servlet类名)?后面action=“add”什么意思后面讲。

import java.awt.List;
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.oracle.jsp.bean.Class_Bean;
import com.oracle.jsp.dao.Class_dao;

/**
 * Servlet implementation class ClassServlet
 */
@WebServlet("/ClassServlet")
public class ClassServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ClassServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub

		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charsetUTF-8");
		response.setCharacterEncoding("UTF-8");
		String action=request.getParameter("action");
		if(action.equals("add"))
		{
			add(request,response);
		}
		if(action.equals("delete"))
		{
			delete(request,response);
		}
		if(action.equals("xiu_gai"))
		{
			xiu_gai(request,response);
		}
		if(action.equals("cha_zhao"))
		{
			cha_zhao(request,response);
		}

	}

	private void cha_zhao(HttpServletRequest request, HttpServletResponse response) {
		// TODO 自动生成的方法存根

		String name=request.getParameter("name");
		Class_Bean c=new Class_Bean();
		c.setName(request.getParameter("name"));
		c.setTeacher(request.getParameter("teacher"));
		c.setPlace(request.getParameter("address"));
		System.out.println(c.getName()+"--"+c.getTeacher()+"--"+c.getPlace());
		Class_dao dao=new Class_dao();

	}

	private void xiu_gai(HttpServletRequest request, HttpServletResponse response) {
		// TODO 自动生成的方法存根

		Class_dao dao =new Class_dao();
		String name =request.getParameter("name");
		String place =request.getParameter("place");
		String teacher=request.getParameter("teacher");
		dao.revise_(name, place, teacher);

	}

	private void delete(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
		// TODO 自动生成的方法存根
		Class_Bean s =new Class_Bean();
		Class_dao dao =new Class_dao();
		String name =request.getParameter("name");
		s= dao.checkLogin(name);
		dao.delete_(name);
		PrintWriter out = response.getWriter();
		out.println(s.getName());
		out.println(s.getPlace());
		out.println(s.getTeacher());
		out.println("删除成功");
		request.getRequestDispatcher("delete.jsp").forward(request,response);
	}

	private void add(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
		// TODO 自动生成的方法存根
		Class_Bean c=new Class_Bean();
		String name =request.getParameter("name");
		String place =request.getParameter("place");
		String teacher=request.getParameter("teacher");

		c.setName(name);
		c.setPlace(place);
		c.setTeacher(teacher);
		Class_dao dao=new Class_dao();
		//Class_dao.add_("777", "2", "1");
		if(dao.checkLogin(c.getName(),c.getPlace(),c.getTeacher())==null)
		{
			Class_dao.add_(name, place, teacher);
			PrintWriter out = response.getWriter();
			out.println(c.getName());
			out.println(dao.checkLogin(c.getName(),c.getPlace(),c.getTeacher()));

			out.print("<script>alert(‘课程添加成功‘); </script>");// window.location=‘add.jsp‘
			out.flush();
			out.close();
			request.getRequestDispatcher("add.jsp").forward(request,response);
		}
		else
		{
			PrintWriter out = response.getWriter();
			out.print("<script>alert(‘课程名称重复‘); </script>");// window.location=‘add.jsp‘
			out.flush();
			out.close();
			request.getRequestDispatcher("add.jsp").forward(request,response);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

  request这个是用来获取value里面的值的

action就是这个作用,选择相应的函数来做你想要干的。

只给留下add的,剩下的jsp就应该自己完成差不多了。

我是先用控制台来操作先弄明白了dao和数据库。最先干的是下载安装数据库。

然后第二步就是弄明白了jsp和serlet的关系。

第三步就是写出来一步步调试。

原文地址:https://www.cnblogs.com/gonT-iL-evoL-I/p/10093452.html

时间: 2024-11-02 15:38:22

十二周周四学术交流会报告的相关文章

第十二周周总结

周数 专业学习目标 专业学习时间 新增代码量 人文方面的学习 知识技能总结 第 十 二 周 数据结构:了解图的基本定义以及一些专有术语所指内容 3 250左右 <最后的文化贵族><少有人走的路 3> 掌握图的基本定义以及一些专有术语所指内容 计算机网络:动态分配路由 3h 200左右 完成相应实验报告:应尽量脱离课本所给出的实验例句,独立完成 WEB:学习背景图片的有关设置 3h 200左右 掌握背景图片的有关设置

第十二周进度条

第十二周          日期  星期一   星期二   星期三   星期四   星期五   星期六   星期日  了解到的知识点 js获取当前时间 var d = new Date() var nowYear = +d.getFullYear() EF框架填充下拉菜单 var model = db.GYSAllFoods.Select(m => new{GYS = m.GYS}).Distinct();//去重很关键            foreach (var item in model

学习进度第十二周

  第十二周 所花时间(包括上课) 11h(4h上课,7课下) 代码量(行) 220 博客量(篇) 1 了解到的知识点 这个星期主要进行了安卓实验和大作业的编写,从中学到了利用安卓SQLite 数据库 进行表的存储以及应用,按照教程成功编写了一个特别小的视频播放器,学会了进度 条等控件的使用.

学习进度-第十二周

  第十二周 所花时间(包括上课) 10小时 代码量(行) 48行 博客量(篇) 3篇 了解到的知识点

第十二周(补)

这几周有点心不在焉的,学习状态不好,作业都忘记写了,有的是存在记事本里忘记上传 周次 学习时间 新编写代码行数 博客量(数) 学到知识点 第十二周 6 80 1 html                               <html><head> <title> HTML</title></head><body > <h1>会员注册界面</h1><form action="proces

信息安全系统设计基础第十二周学习总结

第十二周代码学习 一.environ.c #include <stdio.h> #include <stdlib.h> int main(void) { printf("PATH=%s\n", getenv("PATH")); setenv("PATH", "hello", 1); printf("PATH=%s\n", getenv("PATH")); #if

第十二周学习进度

第十二周:   第十二周 所花时间(包括上课) 上课4小时,课后4小时 代码量(行) 160 博客量 1 了解到的知识点 找水王

第十二周学习进度条

周次 第十二周 所花时间 12小时以上 代码量 1500行以上 博客量 1 学到知识点 上周也没学什么新的内容,还是对以前学过知识的运用.除此之外还是学习了一些新的知识的.由于使用到弹窗.所以上网找了一下弹窗组件,有个叫layer的挺好用的,对于它的一些最常用的一些内容学习使用了一下.

第十二周时间进度表

  第十二周 所花时间 12h 代码量 200 博客量 3篇 了解到的知识点 1.在原有的程序上添加博客信息管理的打分项,能通过程序添加分数,新建作业项 2.用到了Jtable组件,学到如何利用Jtable添加数据,在本程序中用table组件添加学生分数信息和作业项信息 3.设计数据库结构,该存储那些内容