抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

JAVA WEB数据库Sequence批量插入 – 9.23

前端先不考虑,姑且先做后端。(PS:强迫症,没点逼格我不想发出来)

思路很简单 基于昨天的,新建servlet类进行插入操作,因为我的Oracle操作已封装,所以看上去会很少代码,但是大致方法是一样的,有问题可以问我。新建的UserRegist.java,公共库类OracleComm.java在昨天的文章中有。老师抛弃我们自己不能抛弃自己。

package com.lckiss.action;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class UserRegist extends HttpServlet {

    private static final long serialVersionUID = 1L;

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            // get到属性名为user的用户名
            String user = req.getParameter("user");
            // get到属性名为password的密码
            String pwd = req.getParameter("password");
            // String job = req.getParameter("job");
            System.out.println(user);
            System.out.println(pwd);

            resp.setContentType("text/html;charset=GBK");
            PrintWriter out = resp.getWriter();

            boolean rs = Regist(user, pwd);

            if (rs) {
                out.println("<p>" + user + " 已插入成功</p>");
                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 + "";
                    out.println("<p>" + l + "-" + "<a href='" + del + "'>删除</a></p>");
                }
            } else {
                out.println("失败");
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private boolean Regist(String user, String pwd) throws Exception {
        // String sql = "insert into emp (empno,ename,job ,mgr,
        // hiredate,sal,comm,deptno) value(SEQ.NEXTVAL,'t' ,null,null ,null,900,600
        // ,null);";

        // SEQ.NEXTVAL指名为SEQ的Sequence的下一个值,Sequence需要自己布置
        String sql = "insert into emp (EMPNO,ename,job) values(SEQ.NEXTVAL,'" + user + "','" + pwd + "')";
        // 老规矩断点检查
        System.out.println(sql);
        int rs = OracleComm.ExecuteUpdate(sql);
        if (rs > 0) {
            return true;
        } else {
            return false;
        }
    }
}

 部署下servlet 地址为 http://localhost/day_1/regist

<servlet>
    <servlet-name>Regist</servlet-name>
    <servlet-class>com.lckiss.action.UserRegist</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>Regist</servlet-name>
    <url-pattern>/regist</url-pattern>
</servlet-mapping>

这些都不是重点 ,或许值得一提的就是Sequence 我是看的这篇文章 点我

内容属性,例子都很详细

在Oracle上的执行语句为

#不要复制粘贴,必定错,按段来,语句解释仔细看那篇文章
CREATE SEQUENCE SEQ
MINVALUE 3935
START WITH 7935
NOMAXVALUE
INCREMENT BY 1
NOCYCLE
CACHE 30
#这是查询SEQ的下一个值的语句
SELECT SEQ.NEXTVAL FROM EMP
#这是删除这个SEQ的语句
DROP SEQUENCE SEQ

上面是这次servlet中插入语句的解释,

最后上个结果图 插入成功会有提示并更新下面的列表。

前端有时间就直接上源码和图,懒得贴。  Anr-C 2016.9.23


0条评论

发表评论