2012-01-05 4 views
0

私はdbfファイルを持っています。私はsybaseデータベースを更新する必要があります。 dbfファイルのすべてのレコードをsingelマップに入れました。マップの最初の引数はデータバンクに設定される値で、2番目のデータは条件(この場合はメモ)です。どのように私はsybaseデータベースを更新できますか?sybaseデータベースを1回更新しますか?

public static void updateBcHeader(Map<String,String> list){ 
    String query = "update BcHeader\n" + 
      "set Label='poika' \n" + 
      "where Memo like 'A'"; 


} 

答えて

-1

これは私のプロジェクトでテストした正しいコードです。

 PreparedStatement stmt; 
    try { 
     stmt = con.prepareStatement("update BcHeader set Label = ? where memo like ?"); 
     for (Map.Entry<String, String> entry : list.entrySet()) { 
     stmt.setString(1, entry.getKey()); 
     stmt.setTimestamp(2, new Timestamp(new Date().getTime()), Calendar.getInstance()); 
     stmt.setString(3, entry.getValue()); 
     stmt.executeUpdate(); 
    } 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } 
+2

SQLExceptionを無視しないでください。ステートメントはfinallyブロックで閉じなければなりません。そして、このコードはおそらく動作しません。あなたは3つのパラメータを束縛しており、クエリには2しかありません。そして、タイムスタンプのようなものを使うのは意味がありません。あなた自身の質問に答え、あなた自身の答えを受け入れるならば、それを少なくとも正しいものにしてください。 –

3

ループマップエントリを超えると、各エントリの更新ステートメントを実行します。マップは実際にこれらの引数を格納するための悪い選択であることを

PreparedStatement stmt = 
    connection.prepareQuery("update BcHeader set Label = ? where Memo like ?"); 
for (Map.Entry<String, String> entrySet : list.entries()) { 
    stmt.setString(1, entry.getKey()); 
    stmt.setString(2, entry.getValue()); 
    stmt.executeUpdate(); 
} 

注意。 where句にいくつかの値を設定するか、いくつかの要素があったらどうなりますか?複数のメモが同じラベルを共有する場合はどうなりますか? List<Change>を使用する必要があります。Changeは、labelmemoのフィールドを持つオブジェクトになります。

+0

ほんの少しの修正: 'のPreparedStatement stmtは、 \t try { \t \t stmt = con.prepareStatement( "BcHeaderの設定ラベル=?はどこのメモですか?"); \t \t for(Map.Entry entry:list.entrySet()){ \t \t stmt.setString(1、entry.getKey()); \t \t \t stmt.setTimestamp(2、新しいタイムスタンプ(新しいDate()。getTime())、Calendar.getInstance()); \t \t stmt.setString(3、entry.getValue()); \t \t stmt.executeUpdate(); \t} \t}キャッチ(のSQLException E){ \t \t e.printStackTrace(); \t} 「 – itro

+0

私は読者の練習として例外処理を残しました。あなたが示唆しているように例外を無視することは悪い考えです。 –

関連する問題