BurgerKing
04-05-07, 16:23
Hallo,
ich bin ziemlich neu beim Thema Java. Jetzt habe ich mir eine kleine Testanwendung gebaut, bei der eine Maske mit verschiedenen Eingabefeldern ausgegeben wird. Bei einigen dieser Felder dürfen nur Werte eingegeben werden, bei denen ein entsprechender Satz in einer Tabelle auf der AS/400 vorhanden sein muss. Beispiel: Die Maske enthält ein Feld "Benutzer". Jetzt soll in diesem Feld nur ein Benutzer eingetragen werden dürfen, der auf der AS/400 in der Tabelle USRPF hinterlegt ist. Wenn jetzt also auf den OK Button geklickt wird, dann wird eine Methode aufgerufen, die die eingegebenen Werte auf Gültigkeit überprüft. Das Problem ist jetzt die grausame Performance, mit dem das Ganze abläuft. Hier mal ein Beispiel, wie ich solch eine Prüfung mache.
found = false;
select = null;
rs = null;
try {
select = jdbcConnection.createStatement();
rs = select.executeQuery("SELECT COUNT(*) FROM USRLF01 WHERE USR='" +
textOwner.getText() + "'");
if (rs.next() && rs.getLong(1) != 0) {
found = true;
}
}
catch (SQLException e) {
}
if (rs != null) {
try {
rs.close();
}
catch (SQLException e1) {
}
}
if (select != null) {
try {
select.close();
}
catch (SQLException e1) {
}
}
if (!found) {
setErrorMessage("The value in field 'User' is not valid.");
textOwner.setFocus();
return false;
}
Von diesen Prüfungen habe ich in der entsprechenden Methode 15 an der Zahl. Wie kann ich das Ganze beschleunigen? Mache ich etwas grundsätzlich falsch?
ich bin ziemlich neu beim Thema Java. Jetzt habe ich mir eine kleine Testanwendung gebaut, bei der eine Maske mit verschiedenen Eingabefeldern ausgegeben wird. Bei einigen dieser Felder dürfen nur Werte eingegeben werden, bei denen ein entsprechender Satz in einer Tabelle auf der AS/400 vorhanden sein muss. Beispiel: Die Maske enthält ein Feld "Benutzer". Jetzt soll in diesem Feld nur ein Benutzer eingetragen werden dürfen, der auf der AS/400 in der Tabelle USRPF hinterlegt ist. Wenn jetzt also auf den OK Button geklickt wird, dann wird eine Methode aufgerufen, die die eingegebenen Werte auf Gültigkeit überprüft. Das Problem ist jetzt die grausame Performance, mit dem das Ganze abläuft. Hier mal ein Beispiel, wie ich solch eine Prüfung mache.
found = false;
select = null;
rs = null;
try {
select = jdbcConnection.createStatement();
rs = select.executeQuery("SELECT COUNT(*) FROM USRLF01 WHERE USR='" +
textOwner.getText() + "'");
if (rs.next() && rs.getLong(1) != 0) {
found = true;
}
}
catch (SQLException e) {
}
if (rs != null) {
try {
rs.close();
}
catch (SQLException e1) {
}
}
if (select != null) {
try {
select.close();
}
catch (SQLException e1) {
}
}
if (!found) {
setErrorMessage("The value in field 'User' is not valid.");
textOwner.setFocus();
return false;
}
Von diesen Prüfungen habe ich in der entsprechenden Methode 15 an der Zahl. Wie kann ich das Ganze beschleunigen? Mache ich etwas grundsätzlich falsch?