JAVA WEB数据库增删改查全 – 9.30


其实一直想要不要写这么全,毕竟也没讲这么多,但是既然培哥讲了思路,就写完整点算了。这个数据库的增删改就应该完结了吧。

最后的改应该算是最有难度的了吧,虽然说来都差不多,只是多学习几个接口而已。更新了3次才完整搞定,废了些时间

不再直接上完整代码,取部分解释下就行,个人思路,

1475234594171436.png

1475234729271388.png

这里的话我只增加了一个servlet,虽然也只需要一个servlet就行,但是要传值到后台,并转向到一个html,还要在更新页面附上初始值,点击登录将值再次传到后台,我的思路是 给两次点击事件加上不同的id,当点击的是数据旁边的按钮时传过去一个0,登录按钮则为空,这样用来判断是更新数据库还是跳转页面。 

又因为html是静态的,无法给input标签传入值,所以后期改成了jsp动态页面。

类:当然必须基于我的封装类。可以在以前的地方找找,这里不提了。

package com.lckiss.action;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.ResultSet;
import java.util.List;
 
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
 
public class UpdateSQL extends HttpServlet {
 
 /**
 * @author 14436242
 */ private static final long serialVersionUID = 1L;
 
 
 @Override
 protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
 try {
 
 // 设置格式,防止乱码 必须在流前定义
 resp.setContentType("text/html;charset=GBK");
 PrintWriter out = resp.getWriter();
 // 从传输过来的链接中获取empno值
 String empno = req.getParameter("empno");
 String id = req.getParameter("id");
 //测试if条件
 System.out.println(id);
 
 boolean rs = UserID(empno);
 if (rs&&"0".equals(id)) {
 HttpSession session = req.getSession(); 
// String sessionId = session.getId(); ID暂时不需要
 //将empno存储到session中
 resp.setContentType("text/html;charset=GBK");
 session.setAttribute("no", empno); 
 //定向到更新页面
//html抛弃 resp.sendRedirect("./2.html");
 //返回数据ID给JSP页面
 req.setAttribute("ID", empno);
 req.getRequestDispatcher("./index.jsp").forward(req, resp);
 //转向到jsp
 resp.sendRedirect("./index.jsp");
 // 内部打印,方便检测是否出错
 System.out.println(empno);
 } else if (id==null) {
 try {
 
 // 从session中拿到上次的no
 String pno =(String)req.getSession().getAttribute("no");
 String rename = req.getParameter("name");
 String repwd = req.getParameter("pwd");
 System.out.println(pno+"-"+rename+"-"+repwd);
 // 传入相关信息 准备更新
 boolean res = UserUpdate(pno, rename, repwd);
 // 打印更新结果
 System.out.println(res);
 if (res) {
 out.println("<p><font size='3' color='red'>" + pno + " 已更新成功</p></font>");
 out.println("<p>编号 , 姓名 , 工作 , HIREDATA , SAL , COMM ,DEPTNO.</p>");
 List list = OracleComm.QueryALL();
 for (Object c : list) {
 String l = (String) c;
 String no = l.split(",")[0];
 // 因为list.add中插入这段字符串容易出错,所以单独新建一个字符串
 String del = "http://localhost/day_1/del?empno=" + no + "";
 String up="http://localhost/day_1/update?empno=" + no + "&id=0";
 out.println("<p>" + l + "-" + "<a href='" + del + "'>删除</a>"
 +"-"+"<a href='" + up + "'>更新</a>"+"</p>");
 //conn的关闭
 OracleComm.LinkSQL().close();
 }
 } else {
 out.println("Tips:该成员不存在,无法更新");
 }
 out.flush();
 
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 
 } else {
 
 }
 
 } catch (Exception e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 
 }
 
 public boolean UserID(String empno) throws Exception {
 
 String sql = "select * from emp where EMPNO=" + empno + "";
 System.out.println(sql);
 ResultSet rs = OracleComm.ExecuteQuerry(sql);
 while (rs.next()) {
 return true;
 }
 return false;
 }
 
 public boolean UserUpdate(String pno, String name, String pwd) throws Exception {
 
 String sql = "update emp set ename='" + name + "',job='" + pwd + "' where EMPNO=" + pno + "";
 System.out.println(sql);
 int rs = OracleComm.ExecuteUpdate(sql);
 while (rs > 0) {
 return true;
 }
 return false;
 }
 
}

看懂上面得if,else就差不多了。另外就是更新按钮传值的地方。

String up="http://localhost/day_1/update?empno=" + no + "&id=0";
out.println("<p>" + l + "-" + "<a href='" + del + "'>删除</a>"+"-"+"<a href='" + up + "'>更新</a>"+"</p>");

session的话 就是上面类中的一句

 HttpSession session = req.getSession(); 
// String sessionId = session.getId(); ID暂时不需要
 //将empno存储到session中,前面加句,乱码天敌。
 resp.setContentType("text/html;charset=GBK");
 session.setAttribute("no", empno);

和取值

 // 从session中拿到上次的no
 String pno =(String)req.getSession().getAttribute("no");

jsp的代码

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>TIL-lckiss.com</title>
</head>
<body>
 
 <form action="http://localhost/day_1/update" >
 <div align = "center">
 <p>更新测试页面 </p>
 <br>
 ID(不可修改)<input type="text" id="ID" name="ID" value="${ID}"/>
 <br>
 修改昵称:<input type="text" name="name"></input>
 <br> 
 修改密码:<input type="text" name="pwd"></input> 
 <br> 
 <br> 
 <input type="submit" value="更新" /> 
 <input type="reset" value="重置" />
 <br>
 </div>
 </form>
 
</body>
</html>

 然后培哥的动态切换的登录页面也还好的样子,初次接触的话,有必要贴出来记录记录。

<html>
<head>
<title>Login-lckiss.com</title>
</head>
<style type="text/css">
.main {
 width: 400px;
 height: 300px;
 margin: 50px auto;
 border: solid #424242;
}
 
.choose {
 width: 170px;
 height: 20px;
 margin: 30px auto;
 border: solid #424242;
}
 
span {
 cursor: pointer;
}
 
.L {
 background-color: #FFFFFF;
 width: 200px;
 height: 150px;
 margin: 0px 120px;
 position: absolute;
 z-index: 1;
}
 
.R {
 background-color: #FFFFFF;
 width: 200px;
 height: 150px;
 margin: 0px 120px;
 position: absolute;
 z-index: 0;
}
</style>
<script type="text/javascript">
 function toLogin() {
 var L = document.getElementById("Login");
 L.style.zIndex = 1;
 var R = document.getElementById("Register");
 R.style.zIndex = 0;
 }
 function toRegister() {
 var L = document.getElementById("Login");
 L.style.zIndex = 0;
 var R = document.getElementById("Register");
 R.style.zIndex = 1;
 }
</script>
<body bgcolor="#FFFFFF">
 <div class="main">
 <div class="choose" align="center">
 <span onClick="toLogin()">&nbsp;登陆&nbsp;</span>&nbsp; <b>|</b>&nbsp; <span
 onClick="toRegister()">&nbsp;注册&nbsp;</span>
 </div>
 <div id="Login" class="L" align="center">
 <form action="http://localhost/day_1/login">
 <div align="left">
 账号:<input type="text" name="name" ></input><br>
 密码:<input type="password" name="pwd"></input><br>
 <br>
 
 <input type="submit" value="登录"></input>&nbsp;&nbsp;
 <input type="reset" value="重置"></input>
 </div>
 </form>
 </div>
 <div id="Register" class="R" align="center">
 <form action="http://localhost/day_1/regist">
 <div align="left">
 账号:<input type="text" name="user"></input><br>
 密码:<input type="text" name="pwd"></input><br>
 工作:<select name="One">
 <option>One</option>
 <option>Two</option>
 <option>Three</option>
 </select> 
 <br>
 <input type="submit" value="注册"></input>&nbsp;&nbsp;
 <input type="reset" value="重置"></input>
 </div>
 </form>
 </div>
 </div>
</body>
</html>

效果图,不好看是真的,就是两个图层的切换。

1475235660939656.png

就这么多,可能以后得代码会越来越难理解了,不过认真了,想跟上来也不是不可能的,毕竟 两个月前,我也,什么都不懂,即便现在,也懂不了多少,但是愿意坚持,多思考。不就够了吗?    TIL-MICE 2016.9.30

声明:TIL|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA[ZH]协议进行授权

转载:转载请注明原文链接 - JAVA WEB数据库增删改查全 – 9.30


Life is very interesting. In the end, some of your greatest pains become your greatest strengths.