Java DB2错误SQLCODE=-103,SQLSTATE=42604
我试图更新一个表,但它不工作,并给出了这个sql错误Java DB2错误SQLCODE=-103,SQLSTATE=42604,java,sql,jdbc,db2,Java,Sql,Jdbc,Db2,我试图更新一个表,但它不工作,并给出了这个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
//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);
works查询的末尾有一个报价:
" WHERE \"StockBuyId\" = '"+ stkbid + "'");
失败的并不意味着失败
"WHERE \"StockBuyId\" = "+ stkbid);
这可能与此有关。正在运行的查询末尾有一个引号:
" WHERE \"StockBuyId\" = '"+ stkbid + "'");
失败的并不意味着失败
"WHERE \"StockBuyId\" = "+ stkbid);
这可能与此有关。您在
WHERE
子句之前缺少了一个空格,这将您的stknv
搞砸了
" WHERE \"StockBuyId\" = "+ stkbid);
我认为任何海报都有义务提醒您应该使用参数化查询。因此,我也将这样做
“请使用参数化查询!”您在
WHERE
子句之前缺少一个空格,这会使stknv
出错
" WHERE \"StockBuyId\" = "+ stkbid);
我认为任何海报都有义务提醒您应该使用参数化查询。因此,我也将这样做
“请使用参数化查询!”第一个select语句正在工作,我也尝试了将stkbid括在单引号中的相同格式,但在update语句中它不工作是因为某些原因您没有使用参数化查询?是的,我可以使用它,但这也应该可以工作否?-103表示“常量是无效的数值常量“:像您这样构造完整的sql查询通常被认为是不好的形式。在PreparedStatements中使用占位符,如图所示,第一个select语句正在工作,我也尝试了将stkbid括在单引号中的相同格式,但在update语句中它不工作是不是有一些原因导致您不使用参数化查询?是的,我可以使用它,但这也应该可以工作否?-103意味着“常量是无效的数值常量”:像您这样构造完整的sql查询通常被认为是不正确的形式。在PreparedStatements中使用占位符,如图所示。感谢您指出错误,是的,使用参数化查询解决了我的问题。感谢您指出错误,是的,使用参数化查询解决了我的问题。。