运行index.jsp出现这样的报错java.sql.SQLException: No value specified for parameter 1

来源:8-6 所有商品信息显示

shenke

2015-12-10 20:08

运行index.jsp出现这样的报错java.sql.SQLException: No value specified for parameter 1

然后只出现商品展示四个字 什么内容也木有了 

我的代码是

<h1>

<B>商品展示<B>

</h1>

<hr>


<center>

<table width="750" height="60" cellpadding="0" cellspacing="0"

border="0">

<tr>

<td>

<!-- 商品循环开始 -->

<%

         ItemsDAO itemsDao = new ItemsDAO();

         ArrayList<Items> list = itemsDao.getAllItems();

         if (list != null && list.size() > 0) {

        for (int i = 0; i < list.size(); i++) {

           Items item = list.get(i);

         %> 

 


<div>

<dl>

<dt>

<a href="details.jsp?id=<%=item.getId()%>"><img

src="images/<%=item.getPicture()%>" width="120" height="90"

border="1" /></a>

</dt>

<dd class="dd_name"><%=item.getName()%></dd>

<dd class="dd_press">出版社:<%=item.getPress()%></dd>

<dd class="dd_price">价格:¥<%=item.getPrice()%></dd>

</dl>

</div> <!-- 商品循环结束 -->

<%

}

  }               

  %>

求教求教

写回答 关注

3回答

  • sxian_wang
    2015-12-10 20:14:05
    已采纳

    sql语句挂掉了。把你的Statement对象toString打印一下,在控制台里看看sql语句,看哪错了。

    shenke

    非常感谢!好的

    2015-12-10 20:22:55

    共 1 条回复 >

  • shenke
    2015-12-10 20:29:27

    public class ItemsDAO {


    //获得所有的商品信息

    public ArrayList<Items> getAllItems(){

    Connection conn = null;

    PreparedStatement stmt = null;

    ResultSet rs = null;

    ArrayList<Items>list = new ArrayList<Items>();//商品集合

    try{

    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/items","root","123456");

    String sql = "select * from items where id =?;";//SOL语句

    stmt = conn.prepareStatement(sql);

    rs = stmt.executeQuery();

    while(rs.next()){//商品初始化

    Items item = new Items();

    item.setId(rs.getInt("id"));

    item.setName(rs.getString("name"));

    item.setPress(rs.getString("press"));

    item.setNumber(rs.getInt("number"));

    item.setPrice(rs.getInt("price"));

    item.setPicture(rs.getString("picture"));

    item.setNumber(rs.getInt("number"));

    list.add(item);//把一个商品加入集合

    }

    return list;//返回集合

    }

    catch(Exception ex){

    ex.printStackTrace();

    return null;

    }finally{

    //释放数据集对象

    if(rs != null){

    try{

    rs.close();

    rs = null;

    }

    catch(Exception ex){

    ex.printStackTrace();

    }

    //释放语句对象

    if(stmt != null){

    try{

    stmt.close();

    stmt = null;

    }

    catch(Exception ex){

    ex.printStackTrace();

    }

    }

    }

    }

    }

    我的DAO类是这样的 但是我不知道哪里不对呢 求指教

    sxian_...

    问题在这里: String sql = "select * from items where id =?;";//SOL语句 stmt = conn.prepareStatement(sql); rs = stmt.executeQuery(); 你定义完sql语句的时候,对占位符?没有进行填充,直接就execute了,所以报错了。在execute之前用stmt.setObjec(int,Object)或stmt.setString(int,Strint)填充下sql语句再execute。

    2015-12-10 21:00:39

    共 1 条回复 >

  • 惫懒sloth
    2015-12-10 20:20:48

    你的preparestatement没有传参数1的值,已经报出来了

    看一下你后台DAO类写的语句对不对

JAVA遇见HTML——JSP篇

Java Web入门级教程JSP,带你轻松的学习JSP基础知识

248278 学习 · 3071 问题

查看课程

相似问题