2012-03-14 10 views
1

私はmysqlを初めて使用しています。私のjavaプログラムからSQLデータベースを更新する際に問題があります。私のJavaプログラムはすべての計算を実行し、値を2000の文字列配列に更新します。私のSQLデータベースには、次の列が含まれています 名前価格が高い低 私の文字列配列は、コンマで区切られた高値、高値を格納します(実際にyahooファイナンスを照会し、文字列にcsvファイルを格納しました)。 今、私はstring.How私はそれを行うには、データを使用して、高、低価格を更新する必要があります。または、yahoo financeから返されたデータを自分のデータベースに直接アップロードすることは可能ですか?mysqldatabaseを文字列配列から更新する

コード

  URL yahoofin = new URL("http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=nl1sjkm3m4r"); 

      URLConnection yc = yahoofin.openConnection(); 
      BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); 
      String inputLine; 

      while ((inputLine = in.readLine()) != null) 
      { 

      } 

私は

Statement stmt = conn.createStatement() ; 
    // Execute the Update 
    int rows = stmt.executeUpdate("UPDATE tablename SET id = 9842 WHERE name='name'") 

答えて

2

単一の在庫を更新するために使用していたコードプリペアドステートメント構築:CSVファイルの行を反復処理後

String sql = "update stock set price = ?, high = ?, low = ? where name = ?"; 
PreparedStatement stmt = connection.prepareStatement(sql); 

を、各行を4つのフィールドを含むデータ構造(または単純な配列)に構文解析します:

while ((inputLine = in.readLine()) != null) { 
    StockLine line = parseStockLine(inputLine); 
} 

、各行について、パラメータをバインドし、文を実行します。

while ((inputLine = in.readLine()) != null) { 
    StockLine line = parseStockLine(inputLine); 
    stmt.setBigDecimal(1, line.getPrice()); 
    stmt.setBigDecimal(2, line.getHigh()); 
    stmt.setBigDecimal(3, line.getLow()); 
    stmt.setString(4, line.getName()); 
    stmt.executeUpdate(); 
} 

物事をスピードアップするには、バッチを使用することが:

while ((inputLine = in.readLine()) != null) { 
    StockLine line = parseStockLine(inputLine); 
    stmt.setBigDecimal(1, line.getPrice()); 
    stmt.setBigDecimal(2, line.getHigh()); 
    stmt.setBigDecimal(3, line.getLow()); 
    stmt.setString(4, line.getName()); 
    stmt.addBatch(); 
} 
stmt.executeBatch(); 
+0

あなたの助けを借りて – user1092042

+0

私は問題を抱えています。私は、負の符号を持つダブルを更新しようとすると、次のエラーがスローされます。SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックし、正しい構文が 'change = -0.1 where SYMBOL =' at line 1 – user1092042

+0

の近くで使用することを確認してください。これは元の質問とは関係がなく、コードを表示しません。あなた自身で理解しようとしてください。そうでない場合は、別の質問をあなたのコードで尋ねてください。 –

関連する問題