带有hashmap的PreparedStatement

时间:2013-01-07 01:56:35

标签: java prepared-statement

我是Java的新手,我的问题是我试图将货币汇率插入我称为货币的MySQL数据库表中,其中包含两列Currency_name和rate。该程序从金融yahoo API获取货币汇率,我面临将数据存储到我的数据库的问题。

void checkRateAllAtEnd() throws Exception {
       /** print message  */
    System.out.println("checkRateAllAtEnd :");
        long start = System.nanoTime();

        List<Callable<HashMap>> tasks = new ArrayList<Callable<HashMap>>();
        for (final String ccy : CURRENCY) {
                tasks.add(new Callable<HashMap>() {
                        public HashMap call() throws Exception {
                                return getRates(ccy);
                        }
                });
        }
        ExecutorService executorPool = Executors.newCachedThreadPool();
        final List<Future<HashMap>> listRates = executorPool.invokeAll(tasks, 3600, TimeUnit.SECONDS);

        for (Future<HashMap> rate : listRates) {
                HashMap ccyRate = rate.get();
                System.out.println("Value of £1 in " + ccyRate.get("CCY") + " is " + ccyRate.get("RATE"));
        }

我缺乏将hashmap中的值传递给preparedStatement的功劳。

        String sql="update currency set currency_name='"+Value1+"'";
        preparedstatement=connection.prepareStatement(sql); 
        preparedstatement.execute();

我在此链接上的整个班级完全正常运行以保持问题清洁&gt;&gt;&gt; linke&lt;&lt;&lt;

这是我希望存储到MYSQL中的程序的输出理想情况下我想存储

  

ccyRate.get(“CCY”)和ccyRate.get(“RATE”)

checkRateAllAtEnd :
Value of £1 in AED is 5.9201
Value of £1 in AFN is 82.4359
Value of £1 in ALL is 171.681
Value of £1 in AMD is 650.4296
Value of £1 in ANG is 2.8849
Value of £1 in AOA is 154.4766
Value of £1 in ARS is 7.9438
Value of £1 in AUD is 1.5345

1 个答案:

答案 0 :(得分:0)

你的addCurrency方法是错误的 - 你不仅没有通过提供preparedStatmenet作为参数获得任何东西,你在尝试关闭它时没有获得任何东西,因为它在那时是空的。
请告诉我们您遇到的确切错误/异常,我会相应地编辑我的答案。