0
 int selectie = toernooienUitvoer.getSelectedRow();
        int selectiec = toernooienUitvoer.getSelectedColumn();
        String primarykey =  (String) toernooienUitvoer.getValueAt(selectie, 0).toString();
        String waarde = toernooienUitvoer.getValueAt(selectie, selectiec).toString();

        String columnaam = toernooienUitvoer.getModel().getColumnName(selectiec).toString();
        String input = JOptionPane.showInputDialog("wijzig geselecteerde data", waarde);
        toernooienUitvoer.setValueAt(input, selectie, selectiec);   


PreparedStatement stat = con.prepareStatement("UPDATE fullhouse.toernooi SET ? = ? WHERE toernooi.T_code = ?");
        stat.setString(1, columnaam);
        stat.setString(2, input);
        stat.setString(3, primarykey);

みんな、値を入力すれば、クエリが正しいことはわかっています。私の間違いは、MySQLSyntaxErrorExceptionを取得している準備済みステートメントのどこかにあると思います。

4

4 に答える 4

3

列名を動的に渡すためにプレースホルダーを使用できないと思います。クエリは次のようになります。

"UPDATE fullhouse.toernooi SET colname = ? WHERE toernooi.T_code = ?"
于 2013-01-24T22:38:49.750 に答える
0

バインド変数を使用すると、ステートメントがプリコンパイルされ、次の実行時に高速になることを意味します。列の名前をバインド変数にしようとしていますが、これは不可能です。

明らかにいくつかの異なる列を更新する必要があるため、ある程度の速度を達成するには、列ごとに 1 つずつ、いくつかの準備済みステートメントを宣言する必要があります。それらを保管してくださいHashMap<String, PreparedStatement>

于 2013-01-24T22:40:30.977 に答える