0

テーブルを更新しようとしていますが、機能せず、この sql エラーが発生します。

//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);
4

2 に答える 2

3

WHERE節の前にスペースがありませんstknv

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

パラメータ化されたクエリを使用する必要があることを思い出させるのは、ポスターの義務だと思います。だから私も同じようにします。

"パラメータ化されたクエリを使用してください! "

于 2013-04-06T22:18:28.407 に答える
1

機能するクエリには、最後に引用符があります。

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

失敗するものはしない

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

それが何か関係しているかもしれません。

于 2013-04-06T16:53:04.050 に答える