и для пользователя Mac OS вы можете использовать Network Link Conditioner, который можно загрузить из Apple. установите его как AP на Mac, и любые его разделы могут подключаться.
вы можете использовать функции open source с помощью facebook ATC http://facebook.github.io/augmented-traffic-control/ [ ! d0]
Вы повторно используете один и тот же объект Statement
для выполнения двух запросов. Когда stmt
используется для выполнения второго запроса, объект ResultSet
, возвращенный предыдущим оператором, закрывается. Создайте два объекта для каждого запроса.
Пример:
Statement stmt = conn.createStatement();
Statement stmt1 = conn.createStatement();
...
ResultSet res = stmt.executeQuery(Query);
...
while(res.next()){
S_Code = res.getString("S_Code");
Query1 = "SELECT * From Subjects WHERE Prerequisite = '"+S_Code+"'";
res1 = stmt1.executeQuery(Query1); // use a separate statement
while(res1.next()){
DLM.addElement(res.getString("S_Code"));
}
}
Это объясняется в следующей цитате из Statement
API docs :
По умолчанию только один объект
blockquote>ResultSet
на объектStatement
может быть открыт одновременно. Поэтому, если чтение одного объектаResultSet
чередуется с чтением другого, каждый из них должен быть сгенерирован разными объектами Statement. Все методы выполнения в интерфейсеStatement
неявно закрывают текущийResultSet
объект статута, если существует открытый.Также настоятельно рекомендуется закрыть ресурсы JDBC в файле обратный порядок их размещения, т. е. вы должны закрыть
Statement
, затем закройтеConnection
, и вы должны сделать это в блокеfinally
:catch(SQLException e){ JOptionPane.showMessageDialog(null, e.toString()); } finally { if(res != null) { res.close(); } if(res1 != null) { res1.close(); } if(stmt != null) { stmt.close(); } if(stmt1 != null) { stmt1.close(); } if(conn != null) { conn.close(); } }
re, используя Java 7, вы можете использовать оператор try-with-resources для автоматического закрытия этих ресурсов (без явного вызова метода
close()
):// try-with-resources statement declaring two resources try(Connection conn = DriverManager.getConnection(url,username,password); Statement stmt = conn.createStatement()) { ... } catch(SQLException e){ JOptionPane.showMessageDialog(null, e.toString()); }
Попробуемые ресурсы будут не забудьте закрыть объект
Statement
, затемConnection
после их использования.
PreparedStatement
, чтобы OP не попадал в проблемы с кодами курсов, такими как'; DROP TABLE Students; --
:) – Mick Mnemonic 28 April 2015 в 20:23PreparedStatement
s дает хороший обзор. Короче говоря, вы хотите использовать их каждый раз, когда вы передаете переменные в ваш SQL, чтобы избежать SQL injection и включить БД для повторного использования ваших запросов. – Mick Mnemonic 28 April 2015 в 21:09