Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DB2错误SQLCODE=-103,SQLSTATE=42604_Java_Sql_Jdbc_Db2 - Fatal编程技术网

Java DB2错误SQLCODE=-103,SQLSTATE=42604

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

我试图更新一个表,但它不工作,并给出了这个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);

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中使用占位符,如图所示。感谢您指出错误,是的,使用参数化查询解决了我的问题。感谢您指出错误,是的,使用参数化查询解决了我的问题。。