日期:2014-05-17  浏览次数:20821 次

没有为参数号 5 设置值。
我想通过表单向数据库储存数据,出现在了没有为参数号 5 设置值  处理页面代码如下:
<%@page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<%@page import="java.sql.Connection" %>
<%@page import="java.sql.DriverManager" %>
<%@page import="java.sql.SQLException" %>
<%@page import="java.util.Properties" %>
<%@page import="java.sql.Statement" %>
<%@page import="java.sql.CallableStatement" %>
<html>
  <head>
       <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
        <title>执行数据库操作</title>
    </head>
    <body>
   <%request.setCharacterEncoding("GB18030"); %>
<jsp:useBean id="book" class="com.yang.Book"></jsp:useBean>
<jsp:setProperty property="*" name="book"/>
 <%
        try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
         String url = "jdbc:sqlserver://127.0.0.1:1433;database=test;";
     // 数据库用户名
     String username = "sa";
     // 数据库密码
     String password = "***";
     // 创建Connection连接
     Connection con = DriverManager.getConnection(url,username,password);
               CallableStatement cst = con.prepareCall("{?=call tb_books(?,?,?,?)}");
          cst.setString(1,book.getName());
  cst.setDouble(2,book.getPrice());
  cst.setInt(3,book.getBookCount());
  cst.setString(4,book.getAuthor());
  cst.executeUpdate();
  int returnValue=cst.getInt(1);
  if(returnValue==1){
  out.print("添加成功");
  }else{
  out.print("添加失败");
  }
   cst.close();        
   //关闭语句对象,释放其资源
            con.close();       
//关闭连接对象,释放其资源
        } catch (Exception e) {
            out.println("出错啦:" + e.getMessage());
                   }
    %>
    </body>
</html>
------最佳解决方案--------------------
?=call tb_books(?,?,?,?
有几个问号就有几个参数,一共五个,你只给1,2,3,4赋值了,最后一个没有
------其他解决方案--------------------
介意群主还是用mvc模式,把你的jsp页面展现和数据层分开下吧,好久都没看过这种在jsp中操作数据库 了!
------其他解决方案--------------------
哦哦,多谢了
------其他解决方案--------------------
最后一个?没有赋值。
------其他解决方案--------------------
刚刚学JSP,先这样揍着先吧