0

我正在尝试在我的 netbeans 上的 mysql 服务器支持的 glassfish 服务器上创建一个简单的小 web 服务

它被设计成一个非常简单的货币兑换服务

这是它应该做的

它需要一定数量的钱(始终以 GBp 为单位)作为 INT 和货币以将其转换为字符串。

然后,该服务从我的数据库表中查找该货币,以通过如下查询获取转换率

select * from exchange.rates where currency = string

然后它执行简单的计算将钱转换为货币并返回金额

问题是我不知道如何从我的 mysql 服务器调用该转换率,我尝试并尝试但没有任何反应,我只是不断获得与输入相同的金额。

我尝试输入欧元和 10 我在我的数据库中设置了汇率但是当我测试 web 服务时我只得到了 10

 /**
     * Web service operation
     */
    @WebMethod(operationName = "convert")
    public int convert(@WebParam(name = "currency") String currency, @WebParam(name = "amount") int amount) {
        int newamount = 0;
        try {

            Class.forName("com.mysql.jdbc.Driver");
            Connection con =
                    DriverManager.getConnection("jdbc:mysql://localhost:3306/exhange",
                    "root", "25587");
            PreparedStatement st =
                    con.prepareStatement("select * from rates where currency = '" + currency+"'");

            ResultSet rs = null;
            rs = st.executeQuery();
 rs.first();
            newamount =rs.getInt("conversion") * amount;

 return newamount;
        } catch (Exception e) {
            System.out.println("error");
        }

        return amount;
    }
4

1 回答 1

0

当您使用准备好的语句时,您需要显式传递参数:

PreparedStatement st = con.prepareStatement("select * from rates where currency = ?");
st.setString(1,currency) //Check this
ResultSet rs = st.executeQuery();

// If you are sure that is only one row then you nee to do
String columnX = null;
if (rs.next() != null) {
   columnX = rs.getString(1); //Where 1 is the first column
}
于 2012-04-12T12:41:33.377 回答