(3) 预编译和存储过程

2016-09-25  本文已影响262人  笑笑学生

核心代码:
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>
上一篇下一篇

猜你喜欢

热点阅读