No value specified for parameter 1 检查了好几遍,貌似不是因为值没插进去

渣渣不准说话 2018-03-15 07:22:39
主要的报错原因有两个
No value specified for parameter 1
com.zhidisoft.exception.DataAccessException: 执行查询语句- select * from tb_tax_payer where removeState=0 limit ?,? -是出现异常


以下是代码
//servlet中的doGet方法
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String pageNo = req.getParameter("page");
String pageSize = req.getParameter("rows");
String payerCode = req.getParameter("payerCode");
String payerName = req.getParameter("payerName");
System.out.println(pageNo+"\t"+pageSize+"\t"+payerCode+"\t"+payerName);

ManegeTaxPayerDaoImpl cdi = new ManegeTaxPayerDaoImpl();

if(pageNo == null) {
pageNo = "1";
}
if(pageSize == null) {
pageSize = "10";
}


int total = cdi.getAllCount();
PageUtil page = new PageUtil();
page.setTotalCount(total);
page.setPageNo(Integer.parseInt(pageNo));
page.setPageSize(Integer.parseInt(pageSize));

//JSON对象
JSONObject json = new JSONObject();
List<Map<String,String>> list = cdi.getAllTaxPayerByPageUtil(page,payerCode,payerName);

JSONArray array = JSONArray.fromObject(list);

json.put("total", total);
json.put("rows", array);

PrintWriter out = resp.getWriter();
out.write(json.toString());
out.flush();
out.close();

}

//实现类的代码:意在查询数据库中数据,根据两个条件是否存在的四种情况分页查询
public List<Map<String,String>> getAllTaxPayerByPageUtil(PageUtil page,String payerCode,String payerName) {
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
System.out.println(payerCode+"\t"+payerName);
if(payerCode!=null && payerName==null) {
sql = "select * from tb_tax_payer where removeState=0 and payerCode=? limit ?,?";
Object[] p = {payerCode,(page.getPageNo()-1)*page.getPageSize(),page.getPageSize()};
}else if(payerCode==null && payerName!=null){
sql = "select * from tb_tax_payer where removeState=0 and payerName=? limit ?,?";
Object[] p = {payerName,(page.getPageNo()-1)*page.getPageSize(),page.getPageSize()};
}else if(payerCode!=null && payerName!=null) {
sql = "select * from tb_tax_payer where removeState=0 and payerName=? and payerCode=? limit ?,?";
Object[] p = {payerName,payerName,(page.getPageNo()-1)*page.getPageSize(),page.getPageSize()};
}else {
System.out.println((page.getPageNo()-1)*page.getPageSize()+"\t"+page.getPageSize()+"\t"+payerCode+"\t"+payerName);
sql = "select * from tb_tax_payer where removeState=0 limit ?,?";
Object[] p = {(page.getPageNo()-1)*page.getPageSize(),page.getPageSize()};
}

list = db.query(sql, p);
if(list.size()>0) {
return list;
}

return null;
}

//最后是工具类,封装的通用的查询方法,这个是没错的
public static List<Map<String,String>> query(String sql,Object...args){
List<Map<String,String>> list = new ArrayList<Map<String,String>>();
Connection conn = getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
if(args!=null && args.length>0){
for(int i=0;i<args.length;i++){
ps.setObject(i+1, args[i]);
}
}
//执行结果
rs = ps.executeQuery();
//获取到结果集元数据,封装本次查询,查询多少列,这些列名是什么
ResultSetMetaData rsmd = rs.getMetaData();
//获取查询的总列树
int count = rsmd.getColumnCount();

while(rs.next()){
//创建一个Map集合,将当前行的所有的列放置到map集合中
Map<String,String> rowsData = new HashMap<String, String>();
for(int i=0;i<count;i++){
//根据列的索引获取列名
String columnLabel = rsmd.getColumnLabel(i+1);
//根据列名从结果集中获取某一列的值
String columnValue = rs.getString(columnLabel);

rowsData.put(columnLabel, columnValue);
}
//将当前行数据放置到list集合中
list.add(rowsData);
}
} catch (SQLException e) {
e.printStackTrace();
throw new DataAccessException("执行查询语句- "+sql+" -是出现异常",e);
} finally{
close(rs, ps, conn);
}

return list;

}


这个情况是我在getAllTaxPayerByPageUtil方法里添加那几个判断条件后发生的,单单只有
sql = "select * from tb_tax_payer where removeState=0 limit ?,?";
Object[] p = {(page.getPageNo()-1)*page.getPageSize(),page.getPageSize()};
的时候查询成功
所以请教以下前辈们这个问题出在哪了
...全文
3671 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
半城煙沙 2018-03-16
  • 打赏
  • 举报
回复
初步怀疑是你的参数个数和sql语句的绑定个数不匹配,你sql里传三个参数,你把数组打印出来,看看是不是三个。

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧