MySQL Dynamisch Suchen Select

TheR

Mitglied
Deutschland ist im Viertelfinale und ich hoffe jemand kann mir helfen.

Ich habe eine Tabelle und möchte diese anhand von IDs durchsuchen. Dazu habe ich ein JTextField mit einem DocumentListener versehen, das Ganze sieht im Moment so aus:

Java:
JTextField id = new JTextField();
id.getDocument().addDocumentListener(new DBSearch(this));

Java:
public class DBSearch implements DocumentListener {
	private SwingWorker<String, Void> worker;
	private JPanel panel;
	private String query;
	final String queryPraefix = "SELECT * FROM `Data` WHERE `ID` LIKE '";
	
	public DBSearch(JPanel panel) {
		this.panel = panel;
	}
	
	@Override
	public void insertUpdate(DocumentEvent e) {
		search(panel.getID());
	}
	
	@Override
	public void removeUpdate(DocumentEvent e) {
		search(panel.getID());
	}
	
	@Override
	public void changedUpdate(DocumentEvent e) {
		search(panel.getID());
	}
	
	private void search(String input) {
		if (worker != null) worker.cancel(true);
		
		if (!input.isEmpty()) input = input + "%";
		
		query = queryPraefix +  input+ "';";
		worker = new SwingWorker<String, Void>(){
			
			@Override
			protected String doInBackground(){
				ResultSet rs = DBConnector.getInstance().getQueryResult(query);
				int i = 0;
				try {
					while (rs.next() ) {
						i++; // hier lass ich mir alle passenden IDs ausgeben					
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
				return "";
			}
		};
		worker.execute();
	}
}

Bei dieser Variante funktioniert der Abbruch nich. Was ich möchte ist: Das der aktuelle Task unterbrochen wird, wenn man eine weitere Zahl in das Textfeld schreibt und mit der neuen (aktuellen) ID eine neue Suche beginnt.

MfG TheR
 
Zuletzt bearbeitet:

mla.rue

Bekanntes Mitglied
also kA ob es dir wirklich hilft...

a) wenn ich an meine DB connection ein close() schicke, wird die aktuelle Abfrage unterbrochen (sodenn sie noch läuft, siehe b)
b) wie Groß ist denn deine Tabelle? Bei mir ist die Abfrage schneller fertig, als ein zweiter "Buchstabe" eingetippt wird, ein Abbruch ist somit nicht nötig
c) du könntest auch einen KeyListener (drücken von Enter) dem TextField übergeben, oder einen Suchen-Button implementieren, wenn der Benutzer weiss wonach er etwa sucht, ist es denke ich besser als die Datenbank bei jedem Buchstaben zu nerven
 

TheR

Mitglied
Vielen Dank für die Antwort ich habe jetzt eine passende Lösung für mein Problem gefunden.

Da meine ID die Form S<inkrementierteZahl>E<VorkommenDerInkrementiertenZahl> hat, prüfe ich einfach auf die Eingabe eines "e" mit:

Java:
if (Pattern.compile(Pattern.quote("e"), Pattern.CASE_INSENSITIVE).matcher(id).find()) {

Das gibt mir die nötige Geschwindigkeit. Außerdem, und da muss ich dir zustimmen, nerve ich so nicht bei jedem getippten Zeichen die DB.

MfG TheR
 

mla.rue

Bekanntes Mitglied
Wäre ein Keylistener nicht nen Tick besser als dieses Pattern-Monstrum?

Java:
if (evt.getKeyCode() == KeyEvent.VK_E) {
     //code ...
}
 
G

Gast2

Gast
Und da die Usereingabe ungefiltert im SQL landet solltest du lieber PreparedStatements implementieren...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R JPA dynamisch auf NULL abfragen Datenbankprogrammierung 2
M MySQL Tabellen dynamisch erstellen Datenbankprogrammierung 12
Psypsy Dynamisch zur Laufzeit Datenbank erzeugen Datenbankprogrammierung 2
N Java-Objekt dynamisch aus Datenbanktabelle erzeugen? Datenbankprogrammierung 4
P JPA Connection dynamisch hinzufügen Datenbankprogrammierung 2
S Aus ResultSetMetaData Klasse dynamisch erzeugen Datenbankprogrammierung 3
M SQL - Dynamisch die Tabelle in From-Klausel bestimmen Datenbankprogrammierung 11
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
J In einer bestimmten Spalte suchen mit Suchfeld (MS SQL) Datenbankprogrammierung 7
T JPA: Nach String statt Primärschlüssel suchen Datenbankprogrammierung 9
S MySQL Wortteile suchen Datenbankprogrammierung 6
J Mit einer Abfrage Worte suchen die in Zwei Tabellen enthalten sind Datenbankprogrammierung 5
A suchen mit unbekannten werten Datenbankprogrammierung 5
G Suchen von Zahlen in einem Textfeld / SQL Server Datenbankprogrammierung 1
G Suchen nach Autowerten in Access-DB Datenbankprogrammierung 20
R Nach String in MySQL datenbank suchen Datenbankprogrammierung 7
F Stringteil suchen in MySQL Datenbankprogrammierung 7
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
E SQL-Statement um eine Nummer in der Datenbank zu suchen Datenbankprogrammierung 3
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
OnDemand Select * from bringt keine Rückgabe Datenbankprogrammierung 49
OnDemand Select vs Update ins blaue, was ist teurer? Datenbankprogrammierung 11
M JPA: select all mit unterschiedlichem Tablename Datenbankprogrammierung 2
A MySQL Select und Insert in Java Datenbankprogrammierung 15
J JPA: Wie sieht der select aus? Datenbankprogrammierung 2
D geänderte SELECT Abfragen Datenbankprogrammierung 15
N SQLite Hibernate und Aufruf von Funktion SELECT last_insert_rowid() Datenbankprogrammierung 2
T sqlite select Datenbankprogrammierung 12
D Oracle NullPointerException bei select mit Null Values Datenbankprogrammierung 5
F MySQL Was bedeuten die Einzelnen Zeichen in Select Querrys? Datenbankprogrammierung 1
J SQL SELECT mit einem Array Datenbankprogrammierung 1
J SELECT Abfrage/Suche Datenbankprogrammierung 4
E Kann man in einer if-Bedingung auch SELECT-Statements überprüfen? Datenbankprogrammierung 23
M SQL-Exception trotz funktionierendem SELECT Datenbankprogrammierung 4
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
L Select Anweisung wird falsch interpretiert Datenbankprogrammierung 3
C HSQLDB Platzhalter in SELECT Datenbankprogrammierung 6
I SELECT bei Datenbankverbindung Datenbankprogrammierung 6
C MySQL JPA - namedQuery (SELECT) -getResultList() - liefert falsches Ergebnis Datenbankprogrammierung 1
S select: alle ergebnisse ermitteln Datenbankprogrammierung 5
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
C SQL-Statement SELECT über 3 Tabellen Datenbankprogrammierung 5
H HSQLDB insert .... values("test1",select test2 from foo) Datenbankprogrammierung 2
D JDBC insert mit select abfrage Datenbankprogrammierung 5
W SELECT oder Programm-Logik Datenbankprogrammierung 10
J Hibernate Select auf Parameterliste Datenbankprogrammierung 3
D ArrayList in Select Datenbankprogrammierung 12
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
B SELECT ja - INSERT nein (MySQL) Datenbankprogrammierung 3
R Oracle Performance bei SELECT mit vielen Reihen Datenbankprogrammierung 5
T MySQL Db select * und Insert schlagen fehl Datenbankprogrammierung 2
I Select-Statement optimieren Datenbankprogrammierung 14
M Variable in SQL SELECT * FROM ... WHERE mithilfe von PreparedStatement benutzen? Datenbankprogrammierung 28
R Derby/JavaDB Möglichkeit von einem Random Select! Datenbankprogrammierung 6
B Mehrfachschachtelung SELECT Datenbankprogrammierung 2
T MySQL Select: Zusammenfassen von Daten und bilden von Durchschnitt? Datenbankprogrammierung 4
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
R Select Statement als temporärer Table Datenbankprogrammierung 7
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S MySQL Problem mit SELECT bzw encoding Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
A SQLite SELECT von ungleichen Spaltenpaaren Datenbankprogrammierung 10
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
M Hibernate JPQL SELECT optional? Datenbankprogrammierung 2
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
G Aufruf von SELECT INTO Datenbankprogrammierung 8
B H2 PreparedStatement SELECT * FROM ? Datenbankprogrammierung 4
X Select Query auf Substring Datenbankprogrammierung 2
S Select eines bestimmten Datensatzes Datenbankprogrammierung 4
M Select * from mydaten where ... Datenbankprogrammierung 4
T Unerwartete Datenbankausgabe bei "select now()" (es wird ein .0 angehängt) Datenbankprogrammierung 5
M Probleme bei Select in Schleife Datenbankprogrammierung 7
G SELECT liefert leere Zeilen Datenbankprogrammierung 32
M SELECT longtext -> als String behandeln Datenbankprogrammierung 6
H Select in einem Select Datenbankprogrammierung 7
G Select- Abfrage Datenbankprogrammierung 19
S Insert mit Select Datenbankprogrammierung 6
G MSSQL Server SELECT Abfrage funktioniert nicht Datenbankprogrammierung 4
R SELECT aus hsqldb mit Parameter Datenbankprogrammierung 2
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Problem mit einem Select-Befehl Datenbankprogrammierung 5
E Neues select auf ein vorhandenes Resultset Datenbankprogrammierung 11
A SELECT-Anweisung liefert keine Datensätze zurück Datenbankprogrammierung 9
S Select über mehrere Datenbanksysteme Datenbankprogrammierung 14
P SELECT Datenbankprogrammierung 20
T select Abfrage in Java Integer speichern ? Datenbankprogrammierung 2
B fehler bei select befehl Datenbankprogrammierung 5
S Select von bis in DB2 Datenbankprogrammierung 8
S Select mit PreparedStatement Datenbankprogrammierung 2
E Ein If und ein SELECT in Oracle? Datenbankprogrammierung 2
T Select Statement auf Relation Datenbankprogrammierung 3
S PostgreSQL SELECT/UPDATE etc. Datenbankprogrammierung 4
4 Probleme mit Select abfrage Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
N SELECT: Datensatz sperren Datenbankprogrammierung 6
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6

Ähnliche Java Themen

Neue Themen


Oben