Несколько запросов на вставку не работают с TSQLQuery с MySQL [duplicate]

Проблема связана с фокусировкой на основной панели, KeyListener будет генерировать события только тогда, когда компонент, прослушиватель которого зарегистрирован, должен быть сконфигурирован для ОС и HAS-фокус.

Очевидно, что когда кнопка нажата, он получает фокус, а это означает, что никто из других компонентов не может ответить.

Основной ответ: использование Use Key Bindings API .

Есть несколько вариантов, которые вы можете сделать, вы можете использовать текущий контейнер для регистрации привязок клавиш против, например ...

InputMap im = getInputMap(WHEN_IN_FOCUSED_WINDOW);
ActionMap am = getActionMap();

JButton btnC3 = new JButton("");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0), "c3");
am.put("c3", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        btnC3.doClick();
    }
});
btnC3.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // play c
        try {
            keys.playNote(Notes.c3.getValue());
        } catch (InterruptedException e1) {
            e1.printStackTrace();
        } catch (InvalidMidiDataException e2) {
            e2.printStackTrace();
        }
    }
});

JButton btnD3 = new JButton("");
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0), "d3");
am.put("d3", new AbstractAction() {
    @Override
    public void actionPerformed(ActionEvent e) {
        btnD3.doClick();
    }
});

, или вы можете зарегистрировать их в отдельных компонентах. Выбор в основном сводится к тому, насколько вы хотите использовать решение.

Например, вы можете создать Action, который может быть применен как к JButton, так и к ключу, что означает, что вы не Вам нужно программно нажать кнопку.

Например ...

public class NoteAction extends AbstractAction {
    private Note note;
    private Keys keys;

    public NoteAction(Note note, Keys keys) {
        this.note = note;
        this.keys = keys;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        keys.playNote(note.getValue());
    }

}

(У меня нет вашего кода, поэтому я просто делаю некоторые из имена классов вверх)

Тогда вы могли бы просто использовать ...

NoteAction noteAction = new NoteAction(Notes.d3, keys);
JButton btnC3 = new JButton(noteAction);
im.put(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0), "c3");
am.put("c3", noteAction);

, чтобы настроить его.

См. Как использовать действия для более подробной информации

109
задан Undo 19 June 2013 в 21:35
поделиться

5 ответов

Из руководства MySQL

Операторы INSERT, использующие синтаксис VALUES, могут вставлять несколько строк. Для этого включите несколько списков значений столбцов, каждый из которых заключен в круглые скобки и разделен запятыми. Пример:

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
233
ответ дан Jakub Matczak 18 August 2018 в 06:01
поделиться
  • 1
    Это медленнее, чем Load Data Infile? – srchulo 6 November 2012 в 22:59
  • 2
    Также работает в SQL Server 2008 R2 – MaxI 20 August 2013 в 09:40
  • 3
    что такое синтаксис для написания этого оператора insert в хранимой процедуре? – Nitin Sawant 22 August 2013 в 14:09
  • 4
    @Nitin не будет таким же синтаксисом .. ??? В любом случае я бы это сделал в SQL Server. – Ads 10 October 2013 в 01:07
  • 5
    Обратите внимание, что, хотя вопрос помечен как «Как сделать пакетные вставки & quot; этот ответ на самом деле bulk insert. Bulk обычно быстрее, см. этот вопрос – Mike Demenok 17 December 2013 в 05:51

mysql позволяет вам вставлять сразу несколько строк INSERT manual

2
ответ дан bensiu 18 August 2018 в 06:01
поделиться
Insert into table(col1,col2) select col1,col2 from table_2;

Перейдите по адресу: http: //dev.mysql.com/doc/refman/5.5/en/insert.html

6
ответ дан janwen 18 August 2018 в 06:01
поделиться
  • 1
    как насчет insert into select from производительности? это так же быстро, как объемная вставка? – hiway 30 January 2018 в 03:53

В большинстве случаев вы не работаете в клиенте MySQL, и вы должны вставлять вставки вместе с помощью соответствующего API.

Например. в JDBC:

connection con.setAutoCommit(false); 
PreparedStatement prepStmt = con.prepareStatement("UPDATE DEPT SET MGRNO=? WHERE DEPTNO=?");
prepStmt.setString(1,mgrnum1);                 
prepStmt.setString(2,deptnum1);
prepStmt.addBatch();

prepStmt.setString(1,mgrnum2);                        
prepStmt.setString(2,deptnum2);
prepStmt.addBatch();

int [] numUpdates=prepStmt.executeBatch();

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc /ad/tjvbtupd.htm

19
ответ дан Kamran 18 August 2018 в 06:01
поделиться

Запрос данных с информацией о загрузке намного лучше, но некоторые серверы, такие как godaddy, ограничивают эту опцию на общем хостинге, поэтому остаются только две опции, а затем одна запись вставки на каждой итерации или вставке в пакет, но вставка пакета имеет свою ограниченность символов, если ваш запрос превышает это количество символов, заданных в mysql, тогда ваш запрос выйдет из строя, поэтому я предлагаю вставлять данные в куски с пакетной вставкой, это сведёт к минимуму количество соединений, установленных с database.best из удачливых парней

4
ответ дан Syed Adeel Ali Rizvi 18 August 2018 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: