(3) 预编译和存储过程

核心代码:
pre_insert.jsp

<%@ page import="java.sql.*"%>
<%@ page import="java.util.Date,java.text.SimpleDateFormat"%>

  <body>
    <%
        String JDriver="com.microsoft.sqlserver.jdbc.SQLServerDriver";
        String connectDB="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=shopSystem";
        try{
            Class.forName(JDriver);
        }catch(ClassNotFoundException e){
            System.out.println("加载数据库失败");
            System.exit(0);
        }
        
        try{
            String user="sa";
            String password="xuelong";
            Connection con=DriverManager.getConnection(connectDB, user, password);
            System.out.println("数据库连接成功");
            
            //设置编码格式,处理中文乱码
            request.setCharacterEncoding("UTF-8");
            response.setContentType("text/html;charset=UTF-8");
  
            String p_id=request.getParameter("p_id");
            String p_type=request.getParameter("p_type");
            String p_name=request.getParameter("p_name");
            float p_price=Float.parseFloat(request.getParameter("p_price"));
            int p_quantity=Integer.parseInt(request.getParameter("p_quantity"));
            String p_image=request.getParameter("p_image");
            String p_description=request.getParameter("p_description");
            //获取时间
            Date date = new Date();
            SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd");
            String p_time=time.format(date);
            
            //预编译插入数据
            String strSql="insert into product values(?,?,?,?,?,?,?,?)";
            PreparedStatement pstmt=con.prepareStatement(strSql);
            pstmt.setString(1,p_id);
            pstmt.setString(2,p_type);
            pstmt.setString(3,p_name);
            pstmt.setFloat(4, p_price);
            pstmt.setInt(5, p_quantity);
            pstmt.setString(6, p_image);
            pstmt.setString(7, p_description);
            pstmt.setString(8, p_time);
            
            int intTemp=pstmt.executeUpdate();
            if(intTemp!=0){
                out.println("商品添加成功");
            }else{
                out.println("商品添加失败");
            }
            
            //预编译查询
            String strSql2="SELECT TOP 5 p_id,p_type,p_name,p_price,p_quantity FROM product WHERE p_type=? order by p_time asc";
            PreparedStatement pstmt2 = con.prepareStatement(strSql2);
            pstmt2.setString(1, "电视机系列");
            ResultSet rs=pstmt2.executeQuery();
    %>
    <table border="1" align="center">
        <tr>
            <th>商品编号</th>
            <th>商品类别</th>
            <th>商品名称</th>
            <th>商品单价</th>
            <th>商品数量</th>
        </tr>
        <%while(rs.next()){ %>
        <tr bgcolor="blue">
            <td><%=rs.getString("p_id") %></td>
            <td><%=rs.getString("p_type") %></td>
            <td><%=rs.getString("p_name") %></td>
            <td><%=rs.getFloat("p_price") %></td>
            <td><%=rs.getInt("p_quantity") %></td>
        </tr>
        <%}%>
    </table>
    
    <%
/*      创建存储过程
        CREATE PROCEDURE sp_count
            @iSum bigint output
        AS
        SELECT @iSum=sum(p_price*p_quantity) FROM product
        GO 
*/
        //调用存储过程计算总价
        CallableStatement cstmt=con.prepareCall("{call sp_count(?)}");
        cstmt.registerOutParameter(1, Types.INTEGER);
        cstmt.executeUpdate();
        int iCount=cstmt.getInt(1);
        out.println("商品总价为:"+iCount);
    %>
    <%
        cstmt.close();
        pstmt.close();
        pstmt2.close();
        con.close();
        }catch(Exception e){
            out.println(e.toString());
        } 
    %>
  </body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,754评论 18 399
  • 一. Java基础部分.................................................
    wy_sure阅读 3,833评论 0 11
  • 转载自cr180大神DiscuzX2.5完整目录结构【source程序文件库】 /source/admincp后台...
    cndaqiang阅读 879评论 1 2
  • 每个人都有梦想,但我们有的却只有想,假如我有一只猫,我就要猫。假如我有一个苹果,我就只要一个苹果。希望这句话帮助那...
    陈决阅读 280评论 0 3
  • 第一遍读《围城》是在初中,当时只是附庸风雅,纯粹为了看看这个大家口中的好书到底写了些什么,也真好添点谈资。现在结束...
    她如同深海阅读 461评论 0 0