2013-04-06 383 views
0

我想更新一个表,但它不工作,并给这个SQL错误。DB2错误SQLCODE = -103,SQLSTATE = 42604

//Updating Buy Table 
Integer stkbid = Integer.parseInt(request.getParameter("stockBid")); 
System.out.println("stock buy id : " + stkbid); 
//get buy details 
PreparedStatement stmtbuy = conn.prepareStatement(
     "SELECT \"StockSymbol\", \"Unit\", \"Price\", \"ClearingFee\", \"StampDuty\", \"BrokerFee\"" + 
     "FROM SPM.\"StockBuy\" WHERE \"StockBuyId\" = '"+ stkbid + "'"); 

System.out.println("Got stock buy details"); 

ResultSet rs=stmtbuy.executeQuery(); 
rs.next(); 
//String stkcode = rs.getString("StockSymbol"); 
Integer stkunit = Integer.parseInt(rs.getString("Unit")); 
stkunit -= stock.getStockUnit(); 
Double stkprice = Double.parseDouble(rs.getString("Price")); 
Double stkclear = Double.parseDouble(rs.getString("ClearingFee")); 
Double stksd = Double.parseDouble(rs.getString("StampDuty")); 
Double stkbfee = Double.parseDouble(rs.getString("BrokerFee")); 
Double stkval = stkunit * stkprice; 
Double stknv = stkval + stkval * (stkclear + stksd + stkbfee); 

System.out.println(stknv); 

PreparedStatement stmtbuy1 = conn.prepareStatement(
     "UPDATE SPM.\"StockBuy\" SET \"Unit\" = " + stkunit + ", \"Value\" = " + stkval + ", \"NetValue\" = " + stknv + 
     "WHERE \"StockBuyId\" = "+ stkbid); 
+0

第一个SELECT语句是工作,也是我试图单引号内,但它不工作 – 2013-04-06 14:12:23

+0

更新语句封闭stkbid的相同的格式是有一些原因,你没有使用参数化查询? – RedFilter 2013-04-06 14:13:28

+0

是的,我可以使用它,但这应该工作得不? – 2013-04-06 14:14:41

回答

2

您在WHERE条款之前缺少一个空格,这会使您的stknv搞砸。

" WHERE \"StockBuyId\" = "+ stkbid); 

我认为这是任何海报的义务,提醒你应该使用参数化查询。所以我会做同样的事情。

请使用参数化查询!

+0

感谢您指出的错误,是的使用参数化查询解决了我的问题.. – 2013-04-07 15:15:47

1

即作品查询已在最后报价:

" WHERE \"StockBuyId\" = '"+ stkbid + "'"); 

失败并不

"WHERE \"StockBuyId\" = "+ stkbid); 

这可能是与它的人。

相关问题