读书人

用struts2的框架编的一个程序在连接

发布时间: 2012-02-13 17:20:26 作者: rapoo

用struts2的框架编的一个程序,在连接数据库时出错,说是有空指针,但是怎么都找不到错在哪里??求教!!!
eclipse的错误报告:
Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at sale.persistence.GoodsDAOImpl.addGoods(GoodsDAOImpl.java:37)
at sale.service.GoodsFacadeImpl.addGoods(GoodsFacadeImpl.java:18)
at sale.action.GoodsAction.addGoods(GoodsAction.java:143)

----------------------------------

GoodsDAOImpl.java

package sale.persistence;

import java.sql.SQLException;
import java.util.Date;
import java.sql.*;



import sale.domain.Goods;
import sale.util.DBConnection;
import sale.util.Time;


public class GoodsDAOImpl implements GoodsDAO {

Connection conn=null;

Time now=new Time();

Statement st=null;
PreparedStatement psmt1=null;
ResultSet rs=null;

String time=now.getTime();

public void addGoods(String goodsNam,int warehouseId,String description,double number,double cost)
throws SQLException {
String sql="insert into Goods " +"(goodsNam,warehouseId,Description,Number,cost)"
+"values('"+goodsNam+"','"+warehouseId+"','"+description+"','"+number+"','"+cost+"','"+time+"')";
try{
try {
conn=DBConnection.getDBC();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
conn.setAutoCommit(false);
st=conn.createStatement();
st.executeUpdate(sql);
conn.commit();
}catch(SQLException e){
e.printStackTrace();
conn.rollback();
}
conn.setAutoCommit(true);
st.close();
conn.close();


}

public void changeGoods(int goodsId) throws SQLException {
// TODO Auto-generated method stub

}

public void deleteGoods(int goodsId) throws SQLException {
// TODO Auto-generated method stub

}

public void searchGoods(int goodId) throws SQLException {
// TODO Auto-generated method stub

}

}

----------------------------------

GoodsFacadeImpl.java

package sale.service;

import java.sql.SQLException;
import sale.domain.Goods;
import sale.persistence.GoodsDAO;
import sale.persistence.GoodsDAOImpl;

public class GoodsFacadeImpl implements GoodsFacade {

private GoodsDAO goodsDAO;

public GoodsFacadeImpl(){
goodsDAO=new GoodsDAOImpl();
}

public void addGoods(String goodsNam, int warehouseId, String description,
double number, double cost) throws SQLException {
goodsDAO.addGoods(goodsNam, warehouseId, description, number, cost);

}

public void changeGoods(int goodsId) throws SQLException {
// TODO Auto-generated method stub

}

public void deleteGoods(int goodsId) throws SQLException {
// TODO Auto-generated method stub

}

public void searchGoods(int goodId) throws SQLException {
// TODO Auto-generated method stub

}

}
------------------------------------

GoodsAction.java

package sale.action;

import java.sql.SQLException;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import sale.domain.Goods;
import sale.service.GoodsFacade;
import sale.service.GoodsFacadeImpl;



public class GoodsAction {

private GoodsFacade goodsFacade;

Goods goods;
private int goodsId;

private String goodsNam;
private int warehouseId;
private String description;
private double number;


private double cost;

public GoodsAction() {
goodsFacade = new GoodsFacadeImpl();
}


public GoodsFacade getGFacade() {
return goodsFacade;
}


public void setGFacade(GoodsFacade facade) {
goodsFacade = facade;
}


public Goods getGoods() {
return goods;
}


public void setGoods(Goods goods) {
this.goods = goods;
}


public int getGoodsId() {
return goodsId;
}


public void setGoodsId(int goodsId) {
this.goodsId = goodsId;
}

public GoodsFacade getGoodsFacade() {
return goodsFacade;
}


public void setGoodsFacade(GoodsFacade goodsFacade) {
this.goodsFacade = goodsFacade;
}


public String getGoodsNam() {
return goodsNam;
}


public void setGoodsNam(String goodsNam) {
this.goodsNam = goodsNam;
}


public int getWarehouseId() {
return warehouseId;
}


public void setWarehouseId(int warehouseId) {
this.warehouseId = warehouseId;
}


public String getDescription() {
return description;
}


public void setDescription(String description) {
this.description = description;
}


public double getNumber() {
return number;
}


public void setNumber(double number) {
this.number = number;
}


public double getCost() {
return cost;
}


public void setCost(double cost) {
this.cost = cost;
}


public String addGoods() throws SQLException{
/*
Goods goods=getGoods();

goods.setGoodsNam(goodsNam);
goods.setWarehouseId(warehouseId);
goods.setDescription(description);
goods.setNumber(number);
goods.setCost(cost);
*/
String nam=getGoodsNam();
int warehouse=(int)getWarehouseId();
String text=getDescription();
double num=(double)getNumber();
double co=(double)getCost();

//goodsNam=goods.getGoodsNam();

//try {
goodsFacade.addGoods(nam,warehouse,text,num,co);

//setGoods(goods);
return"goodsSuccess";
/*} catch (Exception e) {
e.printStackTrace();
return "goodsError";*/


}

}





[解决办法]
数据库没有连接上...
conn 为空..
你检查一下你的数据库连接代码
[解决办法]
你在那个37行前打印一下conn就知道是否为null了。
[解决办法]
at sale.persistence.GoodsDAOImpl.addGoods(GoodsDAOImpl.java:37)
at sale.service.GoodsFacadeImpl.addGoods(GoodsFacadeImpl.java:18)
这两行能标示一下吗?

读书人网 >Java Web开发

热点推荐