2013-04-06 3 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

первый оператор выбора работает, а также я попробовал один и тот же формат ограждающих stkbid в одинарные кавычки, но в заявлении обновления он не работает –

+0

Есть какой-то причине вы не используют параметризованные запросы? – RedFilter

+0

Да, я могу использовать его, но это тоже должно работать? –

ответ

2

Вам не хватает места перед пунктом WHERE, который испортил ваш stknv.

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

Я думаю, что обязательство любого плаката напоминать вам, что вы должны использовать параметризованный запрос. Поэтому я сделаю то же самое.

«Пожалуйста, используйте параметризованную запрос!»

+0

Спасибо, что указали, что ошибка и да с помощью параметризованного запроса решили мою проблему .. –

1

Запрос, который работает имеет котировку в конце:

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

Тот, который не не

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

Это может иметь что-то делать с ним.

Смежные вопросы