Fehler beim matchen von Strings via Query

Status
Nicht offen für weitere Antworten.

neomizer

Neues Mitglied
Tach Zusammen,

ich habe ein ziemlich stranges Problem, wenn ich versuche einen String per SQL zu vergleichen. Ich habe (als Teil einer größeren Anwendung, deswegen hier nur ein ganz kleiner Ausschnitt) eine Tabelle mit Freitexten

Code:
create table all_values(
id int(11) PRIMARY KEY not null,
value text)

Nun hole ich mir eine Liste aller values und versuche danach die id's anhand der values herrauszufinden:

Code:
"select * from all_values where value=\""+value+"\";

Der Witz ist nun, dass dies bei ca. 100 Werten (von 10k) nicht klappt. Wenn ich allerdings folgendes mache, dann klappt es (und da hört irgendwie mein Verständnis auf):

Code:
"select * from all_values where value=\""+value+"\" and id="+id+";

Die Tabelle ist UTF-8. MySQL 5.0.18 und MySQL-Connector 3.1.12.

Folgender Beispiel-Code:

Code:
	private void testDbValuesOhnePrep(){
		try{
			String statement = "select id,value from all_values;";
			Statement stmt = _conn.createStatement();
			ResultSet result = stmt.executeQuery(statement);
			
			Hashtable<Integer,String> hash = new Hashtable<Integer,String>();
			while (result.next()){
				hash.put(result.getInt(1),result.getString(2));
			}
			result.close();
			
			int counter = 0;
			for (int key : hash.keySet()) {
				// Dies würde klappen
				//String statement2 = "select * from all_values where value=\""+hash.get(key)+"\" and id="+key+";";
				// Dies klappt nicht immer
				String statement2 = "select * from all_values where value=\""+hash.get(key)+"\";";
				
				ResultSet result2 = stmt.executeQuery(statement2);

				if(!result2.next()){
					counter++;
					System.out.println("fehler bei id "+key+" und value <"+hash.get(key)+">");
				}
				result2.close();
			}
			System.out.println("ingesamt "+counter);
		} catch (SQLException e){
			e.printStackTrace();
		}
	}

Da ich mit meinem Latain nun langsam am Ende bin, bin ich für jede (noch so abwegige) Idee dankbar!!

Gruß, Mark

PS: Die Werte, bei denen das matchen nicht klappt, weisen keine besondere Charakteristika auf...
 

Kawa-Mike

Mitglied
Der Value ist ein String.
Versuch doch einmal folgendes:
String s = (String)hash.get(key);
oder
String s = hash.get(key).toString();

und setze den den String in deine SQL-Query ein.
Evtl. gibt es Problem, weil die Hashtable ja ein Object zurückliefert, das einen String enthält, und nicht einen String.

2.)
du kannst auch ein Prepared Statement benutzen. Falls in deinen Werten Sonderzeichen wie z.b. ' " % ? vorkommen, kann die Abfrage verfälscht werden. Nutzt man Prepared Statements, so werden alle Sonderzeichen gequotet.

Gruss
Mike
P.S. Bitte gib mir ein kurzes Feedback, falls es geklappt hat.
 

neomizer

Neues Mitglied
Hi!

Kawa-Mike hat gesagt.:
Der Value ist ein String.
Versuch doch einmal folgendes:
String s = (String)hash.get(key);
oder
String s = hash.get(key).toString();

und setze den den String in deine SQL-Query ein.
Evtl. gibt es Problem, weil die Hashtable ja ein Object zurückliefert, das einen String enthält, und nicht einen String.

Naja, es ist ein Hash von (Integer,String), sprich ich bekomme einen String-Object zurück, bzw. der Compiler übernimmt das casten für mich. Im kompletten System prüfe ich u.a. auch auf String. Das ist also mit Sicherheit ein String Objekt.

Kawa-Mike hat gesagt.:
2.)
du kannst auch ein Prepared Statement benutzen. Falls in deinen Werten Sonderzeichen wie z.b. ' " % ? vorkommen, kann die Abfrage verfälscht werden. Nutzt man Prepared Statements, so werden alle Sonderzeichen gequotet.

Hätte ich vielleicht mehr zu sagen sollen. Im kompletten System (der Code im Posting war nur eine Reduktion auf das Problem) benutzte ich Prepared Statements, ich habe dir nur als potentielle Fehlerquelle auch entfernt.

Mittlerweile habe ich leider herrausgefunden, dass das leider kein Java Problem ist, sondern nur MySQL: Ich kann das leider mit den MySQL-Client reproduzieren...
"Zum Glück" habe ich mich aber in der Version geirrt, die 5er läuft auf dem Produktivsystem, auf dem Testsystem läuft eine 4er Version (warum auch immer die beiden Versionen nicht gleich sind :-/).

Wobei es mich noch immer brennend interessiert, was das für ein Fehler ist...

Gruß, Mark
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Oracle Fehler beim list.add() Datenbankprogrammierung 5
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
G Fehler beim Verbinden Datenbankprogrammierung 4
J Fehler beim PreparedStatement Datenbankprogrammierung 2
A Fehler beim Verbinden zur Oracle-DB Datenbankprogrammierung 6
T Cast-Fehler: Spring Data exists.... boolean??? Datenbankprogrammierung 1
T compiler fehler: should be mapped with insert="false" update="false" Datenbankprogrammierung 1
O Create Table per JDBC Fehler: ORA-00922 Datenbankprogrammierung 4
H Fehler bei getConnection zu MySQL Datenbank Datenbankprogrammierung 18
S MySQL Hibernate: Fehler bei Verwendung von 2 unterschiedlichen Enumration Datenbankprogrammierung 3
S @OneToMany @JoinTable failed to lazily initialize a collection Fehler Datenbankprogrammierung 2
das_leon MySQL Fehler bei der Zeitzone Datenbankprogrammierung 7
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
DaCrazyJavaExpert Derby/JavaDB Unfindbarer Fehler im Datenbank-Code Datenbankprogrammierung 87
L SQL Fehler (Table/View does not exist) Datenbankprogrammierung 17
P MySQL JPA / MySQL - Fehler bei type=innoDB Datenbankprogrammierung 8
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
M MySQL-Syntax-Fehler Datenbankprogrammierung 1
Z Finde den Fehler: Daten aus einer Access-Datenbank lesen Datenbankprogrammierung 12
W Jackcess Fehler Datenbankprogrammierung 1
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
J SQL-Statement Meine insert befehle funktionieren nicht und ich weiß nicht wo der fehler liegt Datenbankprogrammierung 5
serjoscha MySQL Eine Instanz von eigenem DBWrapper -> Fehler durch mehrfachbenutzung möglich? Datenbankprogrammierung 2
M Wo ist mein Fehler ? o: Datenbankprogrammierung 4
T JDBC Fehler Datenbankprogrammierung 2
Neumi5694 Java + MS Access + 64 Bit = Fehler -1073740777 Datenbankprogrammierung 2
R Fehler 2601 trotz SQL-UPDATE ? Datenbankprogrammierung 2
B JDBC Connection Fehler Datenbankprogrammierung 8
J Fehler bei mySQL Query Datenbankprogrammierung 19
D Oracle PLSQL Block Fehler Datenbankprogrammierung 11
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
S Fehler mit JdbcRowSet Datenbankprogrammierung 2
A Oracle Unbekannter Fehler bei insert Befehl Datenbankprogrammierung 3
B MySQL Fehler: Cannot open connection mit Tomcat7, Hibernate und MySQL Datenbankprogrammierung 4
M PL/SQL Fehler "Kein Wert zurückgegeben" Datenbankprogrammierung 4
S 2 Tabellen zu einer zusammenführen, INSERT INTO Fehler Datenbankprogrammierung 5
Crashbreaker MySQL MySQL - Hibernate gibt Fehler aus Datenbankprogrammierung 25
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
I Derby/JavaDB Update Fehler Datenbankprogrammierung 4
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
N Oracle Fehler Ungültiges Zeichen Datenbankprogrammierung 2
jgh Zeichensatz-Fehler Datenbankprogrammierung 10
F hsqldb Fehler - unknown source Datenbankprogrammierung 11
E Fehler- Komme nicht auf Datenbank Datenbankprogrammierung 13
trash ResultSet Syntax Fehler Datenbankprogrammierung 11
trash JDBC Einbinden Fehler Datenbankprogrammierung 9
B Fehler in Stored Procedure Datenbankprogrammierung 7
E [ACCESS ODBC] INSERT INTO Fehler Datenbankprogrammierung 4
E Nach Server wechsel Datenbank fehler ?!? Datenbankprogrammierung 3
H Fehler bei null-Datum in MySQL-DB Datenbankprogrammierung 2
B SQL - Ich kann die Fehler nicht finden Datenbankprogrammierung 3
K DB2 Insert mit Subselect Fehler Datenbankprogrammierung 2
M Update mysql Fehler ?? Datenbankprogrammierung 4
T Fehler im SQL ... Datenbankprogrammierung 8
J Fehler bei Hibernate Configuration Datenbankprogrammierung 9
N group by fehler Datenbankprogrammierung 4
P SQL Fehler helft mir bitte Datenbankprogrammierung 12
F Fehler bei Stored Function Datenbankprogrammierung 2
C Wo ist der Fehler? Datenbankprogrammierung 5
H Fehler mit ". Microsoft Access Driver" Datenbankprogrammierung 12
K Fehler bei Rückgabewerten Datenbankprogrammierung 3
M Statemend Fehler Datenbankprogrammierung 11
E Seltsamer Fehler Datenbankprogrammierung 10
T Fehler bei Verbindungsaufbau zu MySql DB Datenbankprogrammierung 4
S Fehler bei DB Verbindung Access Datenbankprogrammierung 6
A JDBC-Fehler "Objekt bereits geschlossen" Datenbankprogrammierung 4
O SQL-Query bringt Fehler Datenbankprogrammierung 4
B MySql DELETE Anweisung gibt Fehler zurück Datenbankprogrammierung 7
A Fehler in der HSQLDB Datenbankprogrammierung 6
B fehler bei select befehl Datenbankprogrammierung 5
G SQL fehler -> woran liegt das? Datenbankprogrammierung 3
M Odbc und Fehler Datenbankprogrammierung 44
M Fehler bei der Verbindung zu einer MSSQL/Express Datenbank! Datenbankprogrammierung 17
D mySQL emullierte PreparedStatements haben Fehler unter Last Datenbankprogrammierung 3
F Fehler in Suns FilteredRowSet Implementierung? Datenbankprogrammierung 11
R Fehler in der Eingabe? Datenbankprogrammierung 3
J Fehler bei Oracle-Datenbankverbindung Datenbankprogrammierung 2
E JDBC Oracle Fehler, zugriff auf datenbank (Cluster) Datenbankprogrammierung 5
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
G Fehler in der select-Abfrage Datenbankprogrammierung 3
D Primary-Key -> Fehler: "Unique constraint violation& Datenbankprogrammierung 12
E Fehler in der SQL-Anweisung Datenbankprogrammierung 11
A Fehler in der Datenbankklasse Datenbankprogrammierung 14
M insert befehl funzt nicht!wo ist der fehler? Datenbankprogrammierung 5
L komischer Fehler von ResultSet. Datenbankprogrammierung 2
R Fehler in Datenbankanbindung Servlet -> Access Datenbankprogrammierung 5
E Fehler bei String-Insert in MySQL-DB Datenbankprogrammierung 8
G Wo ist hier der Fehler (createStatement) Datenbankprogrammierung 2
M executeBatch() - Inserts trotz Fehler weitermachen Datenbankprogrammierung 5
W Fehler bei Insert Anweisung obwohl getestet Datenbankprogrammierung 3

Ähnliche Java Themen

Neue Themen


Oben