java 超出string长度6,java - 我在执行Web应用程序时遇到“索引6超出长度6的限制” - SO中文参考 - www.soinside.com...

对于我的测试运行,我只有一个条目,单击提交后,出现错误“索引6超出长度6的范围”。注意:一次输入意味着我只填写6种材料的详细信息。

这是我的servlet代码的样子。我已经使用request.getParameterValues在数组中输入表单数据。Class.forName(driver);

Connection connection = DriverManager.getConnection(connectionUrl + database, userid, password);

connection.setAutoCommit(false);

String insertTableSQL = "INSERT INTO material" + " (PassNumber, InitiatingOfficer, staff_id, Materials, Quantity, Unit, Date_of_return) VALUES " + " (?, ?, ?, ?, ?, ?, ?);";

PreparedStatement st = connection.prepareStatement(insertTableSQL);

for(int i=0; i

st.setString(1, PassNumber);

st.setString(2, InitiatingOfficer);

st.setInt(3, staff_id);

st.setString(4, Materials[i]);

st.setString(5, Quantity[i]);

st.setString(6, Unit[i]);

st.setString(7, Date[i]);

st.addBatch();

}

st.executeBatch();

这是初始化数组的方式:public class raisegatepass extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

LoginBean loginBean = new LoginBean();

String PassNumber = generatePIN(); //Pass Number

String InitiatingOfficer = loginBean.getName(); // Name

int staff_id = loginBean.getstaffid(); // Staff ID

String[] Materials = request.getParameterValues("materialInfo"); // Array containing Material Name list

String[] Unit = request.getParameterValues("materialUnit"); // Array containing Unit

String[] Quantity = request.getParameterValues("materialQuantity"); // Array containing Quantity in string

String[] Date = request.getParameterValues("materialDate"); // date of return

而且,如果我事先不知道用户将填充多少行,这是将数据输入到表中的正确方法吗?

编辑:这是我完整的servlet代码

公共类raisegatepass扩展HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

LoginBean loginBean = new LoginBean();

String PassNumber = generatePIN(); //Pass Number

String InitiatingOfficer = loginBean.getName(); // Name

int staff_id = loginBean.getstaffid(); // Staff ID

String[] Materials = request.getParameterValues("materialInfo"); // Array containing Material Name list

String[] Unit = request.getParameterValues("materialUnit"); // Array containing Unit

String[] Quantity = request.getParameterValues("materialQuantity"); // Array containing Quantity in string

String[] Date = request.getParameterValues("materialDate"); // date of return

String driver = "com.mysql.jdbc.Driver";

String connectionUrl = //Url

String database = //Database

String userid = //userid

String password = //password

try {

Class.forName(driver);

Connection connection = DriverManager.getConnection(connectionUrl + database, userid, password);

connection.setAutoCommit(false);

String insertTableSQL = "INSERT INTO material" + " (PassNumber, InitiatingOfficer, staff_id, Materials, Quantity, Unit, Date_of_return) VALUES " + " (?, ?, ?, ?, ?, ?, ?);";

PreparedStatement st = connection.prepareStatement(insertTableSQL);

for(int i=0; i

st.setString(1, PassNumber);

st.setString(2, InitiatingOfficer);

st.setInt(3, staff_id);

st.setString(4, Materials[i]);

st.setString(5, Quantity[i]);

st.setString(6, Unit[i]);

st.setString(7, Date[i]);

st.addBatch();

}

st.executeBatch();

} catch(Exception e)

{

JOptionPane.showMessageDialog(null, e.getMessage());

RequestDispatcher view = request.getRequestDispatcher("gatepass_raise.jsp");

view.forward(request, response);

}

public String generatePIN()

{

int x = (int)(Math.random() * 6);

x = x + 1;

Random r = new Random();

char c = (char)(r.nextInt(26) + 'A');

String randomPIN = c + (x + "") + ( ((int)(Math.random()*100)) + "" );

return randomPIN;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值