第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

輸入查詢條件會報參數(shù)索引超出范圍的錯誤

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

兩個百分號之間加了空格,

控制臺打印的paramerList為??????是不是表示頁面的參數(shù)沒有傳過去?

package?servlet;

import?java.io.IOException;
import?java.sql.Connection;
import?java.sql.DriverManager;
import?java.sql.PreparedStatement;
import?java.sql.ResultSet;
import?java.sql.SQLException;
import?java.util.ArrayList;
import?java.util.List;

import?javax.servlet.ServletException;
import?javax.servlet.http.HttpServlet;
import?javax.servlet.http.HttpServletRequest;
import?javax.servlet.http.HttpServletResponse;

import?bean.Message;

/**
?*?@author?570
?*
?*/
public?class?ListServlet?extends?HttpServlet?{

????/**
?????*?
?????*/
????private?static?final?long?serialVersionUID?=?1L;

????@Override
????protected?void?doGet(HttpServletRequest?req,?HttpServletResponse?resp)?throws?ServletException,?IOException?{
????????
????????try?{
????????????
????????????String?command?=?req.getParameter("command");//從頁面拿到參數(shù)
????????????String?description?=req.getParameter("description");
????????????
????????????Class.forName("com.mysql.jdbc.Driver");
????????????Connection?conn?=?DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoding=utf8&useSSL=true","root","root");
????????????
//????????????String?sql?="SELECT?ID,COMMAND,DESCRIPTION,CONTENT?FROM?imooc_mybatis_list";
????????????
????????????//where?1=1?用于語句拼接。。不明所以
????????????StringBuilder?sql?=?new?StringBuilder("select?ID,COMMAND,DESCRIPTION,CONTENT?from?imooc_mybatis_list?where?1=1");?
????????????
????????????PreparedStatement?ps?=?conn.prepareStatement(sql.toString());
//????????????PreparedStatement?ps?=?conn.prepareStatement(sql);
????????????//多條件查詢時,利用List做緩沖,保存查詢參數(shù),然后再循環(huán)賦值
????????????List<String>?paramerList?=?new?ArrayList<String>();
????????????//語句拼接如果查詢的指令非空且非空字符串則執(zhí)行語句拼接查詢
????????????if?(command!=null&&!"".equals(command.trim()))?{
????????????????sql.append("?and?COMMAND=??");
????????????????paramerList.add(command);
????????????}
????????????
????????????if?(description!=null&&!"".equals(description.trim()))?{
????????????????sql.append("and?DESCRIPTION?like?'%'???'%'?");
????????????????paramerList.add(description);
????????????}
????????????//把頁面上的語句拿給要送到數(shù)據(jù)庫查詢的ps中
????????????for?(int?i?=?0;?i?<?paramerList.size();?i++)?{
????????????????System.out.println(paramerList.get(i));
????????????????ps.setString(i+1,?paramerList.get(i));//錯誤指向這一行
????????????}
????????????
????????????ResultSet?rs?=?ps.executeQuery();
????????????List<Message>?messageList?=?new?ArrayList<Message>();
????????????
????????????while?(rs.next())?{
????????????????Message?message?=?new?Message();
????????????????messageList.add(message);
????????????????message.setId(rs.getString("ID"));
????????????????message.setCommand(rs.getString("COMMAND"));
????????????????message.setDescription(rs.getString("DESCRIPTION"));
????????????????message.setContent(rs.getString("CONTENT"));????????????????
????????????}
????????????
????????????req.setAttribute("messageList",?messageList);
????????????
????????}?catch?(ClassNotFoundException?e)?{????????????
????????????e.printStackTrace();
????????}?catch?(SQLException?e)?{????????????
????????????e.printStackTrace();
????????}????????
????????req.getRequestDispatcher("/WEB-INF/jsp/list.jsp").forward(req,?resp);
????}
????
????@Override
????protected?void?doPost(HttpServletRequest?req,?HttpServletResponse?resp)?throws?ServletException,?IOException?{
????????
????????this.doGet(req,?resp);
????}
????
????

}


正在回答

3 回答

"?and?COMMAND=??" ? ? ?后面不要加空格

0 回復(fù) 有任何疑惑可以回復(fù)我~

你把req.setCharacterEncoding("UTF-8");這行代碼復(fù)制到你的第34行應(yīng)該是可以的

0 回復(fù) 有任何疑惑可以回復(fù)我~

出現(xiàn)了問號是編碼問題, 你在第35行加一下這個,設(shè)置編碼utf-8,試試看

req.setCharacterEncoding("UTF-8");


0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

124839 提問者

按照您說的確是不是問號了,,謝謝。。不過還是出現(xiàn)了 信息: Server startup in 2194 ms 查看 java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0). 。。。一大串
2016-09-13 回復(fù) 有任何疑惑可以回復(fù)我~
#2

Uauslman 回復(fù) 124839 提問者

sql.append("and DESCRIPTION like '%' ? '%' ");你的第60行是否輸入了空格。sql語句語法對不對你再看看。輸入空格試試。
2016-09-20 回復(fù) 有任何疑惑可以回復(fù)我~
#3

124839 提問者 回復(fù) Uauslman

輸入空格了。。就算是第一個查詢命令command輸入查看也會報java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).這個錯誤
2016-09-20 回復(fù) 有任何疑惑可以回復(fù)我~
#4

124839 提問者 回復(fù) Uauslman

我把sql語句打出來了(select ID,COMMAND,DESCRIPTION,CONTENT from imooc_mybatis_list where 1=1 and COMMAND='?' 查看)是不是’查看‘沒有替換掉‘?’
2016-09-20 回復(fù) 有任何疑惑可以回復(fù)我~
#5

Uauslman 回復(fù) 124839 提問者

我研究老半天才發(fā)現(xiàn)你把“PreparedStatement ps = conn.prepareStatement(sql.toString());”這就放到了判斷句之前,在沒有添加任何元素的情況下,當(dāng)然回事空指針異常報警,希望能幫到你。
2016-09-20 回復(fù) 有任何疑惑可以回復(fù)我~
#6

Uauslman 回復(fù) Uauslman

我研究老半天才發(fā)現(xiàn)你把“PreparedStatement ps = conn.prepareStatement(sql.toString());”這句放到了判斷句之前,在沒有添加任何元素的情況下就去執(zhí)行這句話,當(dāng)然會空指針異常報警,希望能幫到你。
2016-09-20 回復(fù) 有任何疑惑可以回復(fù)我~
查看3條回復(fù)

舉報

0/150
提交
取消

輸入查詢條件會報參數(shù)索引超出范圍的錯誤

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號