如何 更新一条数据 向数据库
public class productDao {
public static void main(String [] args){
productDao p=new productDao();
beanProduct bean= new beanProduct();
bean.setDid("12345");
//p.sum();
//p.sumdange();
//System.out.print(p.sumdange());
beanProduct bea =new beanProduct();
p.updateProduct(bea);
System.out.print( p.updateProduct(bea));
}
public boolean updateProduct(beanProduct bean){
Connection conn = DBConn.getConn();
try {
PreparedStatement pstmt=conn.prepareStatement(" update [Product] set p_name=? where p_id=?");
pstmt.setString(1, bean.getDid());
pstmt.setString(3, bean.getName());
pstmt.executeUpdate();
return true;
} catch (SQLException e) {
e.printStackTrace();
return false;
}finally{
DBConn.CloseConn();
}
}
异常
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.clearParameter(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setNull(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcPreparedStatement.setString(Unknown Source)
at org.com.DAO.productDao.updateProduct(productDao.java:206)
at org.com.DAO.productDao.main(productDao.java:26)
搜索更多相关主题的帖子:
数据库
----------------解决方案--------------------------------------------------------
看异常应该是越界问题,但看不出来哪里越界了,
更新一条数据,必须是持久状态的对象,而你beanProduct bean= new beanProduct(); 这样NEW出来的对象是临时状态的,
你看看是不是这个问题,
----------------解决方案--------------------------------------------------------
pstmt.setString(3, bean.getName());
3??
----------------解决方案--------------------------------------------------------
越界问题,因为更新数据室从0 开始 我是从1 开始 所以报错,
----------------解决方案--------------------------------------------------------