Java 结果集遍历时空指针错误?救救我吧!!!

dongxingman 2010-02-04 02:39:16
package com.dong;

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 javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class BuyerOrderServlet extends HttpServlet {

private static final long serialVersionUID = -3855206432313787833L;
String[] order_id = null;
String[] new_price = null;
String[] product_number = null;

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

doPost(request, response);
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
HttpSession session = request.getSession(true);
response.setContentType("text/html;charset=utf-8");
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@127.0.0.1:1521:global";
String username = "scott";
String password = "tiger";
ResultSet rs = null;
Connection conn = null;
PreparedStatement pstmt = null;
String sql = "select order_id,new_price,product_number from lineItem_table where user_id='59'";
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {

e.printStackTrace();
}
try {
conn = DriverManager.getConnection(url, username, password);
} catch (SQLException e) {

e.printStackTrace();
}

try {
pstmt = conn.prepareStatement(sql);
} catch (SQLException e) {

e.printStackTrace();
}
try {
rs = pstmt.executeQuery();
} catch (SQLException e) {

e.printStackTrace();
}
int i = 0;
try {
while (rs.next()) {
order_id[i] = rs.getString("order_id");--------------------------这行提示有错,但是不知什么原因
new_price[i] = rs.getString("new_price");
product_number[i] = rs.getString("product_number");

i++;
}
} catch (SQLException e) {

e.printStackTrace();
}

for (int j = 0; j < order_id.length; j++) {

session.setAttribute("order_id[j]", order_id[j]);

session.setAttribute("new_price[j]", new_price[j]);
session.setAttribute("product_number[j]", product_number[j]);

}
response.sendRedirect("/task/maijiadingdan.jsp");
session.setAttribute("order_id_length", order_id.length);
}

}
...全文
271 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
2到20个英文 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dongxingman 的回复:]
我解决了,我原来在jsp页面中用的是i做计数器即session.getAttribute("order_id[i]");
但是不管用什么做计数器在session中都必须用原来servlet中的计数器名才可以即session.getAttribute("order_id[j]");
-----------------j是我servlet中的计数器
[/Quote]

解决了好,你会结贴吗?
2到20个英文 2010-02-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dongxingman 的回复:]
这个问题解决了,但是还存在一个问题,就是用session传值的问题
for (int j = 0; j < order_id.length; j++) {

session.setAttribute("order_id[j]", order_id[j]);-----------order_id[j]不能传值。但是把这和下面的[j]改为[0]时可以。
session.setAttribute("new_price[j]", new_price[j]);
session.setAttribute("product_number[j]", product_number[j]);

}
我在jsp页面中用session.getAttribute("order_id[j]");(这和上面都改为[0]时可以)获取不了,但是当我把jsp和servlet中传值用的两个对应的[j]改为[0]时就行了

[/Quote]


session.setAttribute("order_id[j]", order_id[j]); -----------order_id[j]不能传值。但是把这和下面的[j]改为[0]时可以。

后面设置把前面的又给覆盖了

2。session.setAttribute("new_price[j]", new_price[j]);
你这样写又不是动态的
dongxingman 2010-02-04
  • 打赏
  • 举报
回复
我解决了,我原来在jsp页面中用的是i做计数器即session.getAttribute("order_id[i]");
但是不管用什么做计数器在session中都必须用原来servlet中的计数器名才可以即session.getAttribute("order_id[j]");
-----------------j是我servlet中的计数器
dongxingman 2010-02-04
  • 打赏
  • 举报
回复
这个问题解决了,但是还存在一个问题,就是用session传值的问题
for (int j = 0; j < order_id.length; j++) {

session.setAttribute("order_id[j]", order_id[j]); -----------order_id[j]不能传值。但是把这和下面的[j]改为[0]时可以。
session.setAttribute("new_price[j]", new_price[j]);
session.setAttribute("product_number[j]", product_number[j]);

}
我在jsp页面中用session.getAttribute("order_id[j]");(这和上面都改为[0]时可以)获取不了,但是当我把jsp和servlet中传值用的两个对应的[j]改为[0]时就行了
lp19890601 2010-02-04
  • 打赏
  • 举报
回复
你惨了!
chentianzhao1985 2010-02-04
  • 打赏
  • 举报
回复
这种问题都搞不定,你没有初始化
houchaofei2008 2010-02-04
  • 打赏
  • 举报
回复
没有给这个对象赋值 用NEW开辟一个新的内存空间
focusforce 2010-02-04
  • 打赏
  • 举报
回复
String[] order_id = null;
String[] new_price = null;
String[] product_number = null;
都没初始化。另外,这些变量你最好别用类变量而用局部变量,否则容易出现线程同步的问题。
liaojianbiao 2010-02-04
  • 打赏
  • 举报
回复
应该是数据没new
是个空值
luoke03 2010-02-04
  • 打赏
  • 举报
回复
order_id[i] = rs.getString("order_id");--------------------------这行提示有错,但是不知什么原因

order_id[i] 数组没有实例
引用
CJljfn 2010-02-04
  • 打赏
  • 举报
回复
好久沒用java了。
幫頂下
2到20个英文 2010-02-04
  • 打赏
  • 举报
回复
一看你
# 等 级:
# 结帖率:0.00%
勒了

结贴吧
2到20个英文 2010-02-04
  • 打赏
  • 举报
回复
order_id[i] = rs.getString("order_id");--------------------------这行提示有错,但是不知什么原因

order_id[i] 数组没有实例

new 下

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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