Zum Inhalt

Monat: Dezember 2010

this and that SQL Server

Letztes Restore-Datum einer Datenbank ermitteln

select destination_database_name,max(restore_date) as letztes_Wiederherstellungsdatum from msdb..restorehistory
where destination_database_name='Datenbankname'
group by destination_database_name

Letztes Backup-Datum einer Datenbank ermitteln

select database_name,max(backup_finish_date) as letztes_Backupdatum from msdb..backupset
where database_name='Datenbankname'
group by database_name

Datenbankobjekt finden

Select * From sysobjects Where UPPER(name) like UPPER('%Objektname%')

Java: Vergleich von Strings

Will man in Java zwei Strings miteinander vergleichen, so muss hierbei aufpassen bzw. sollte eigentlich immer nur einen Weg verwenden. Schauen wir uns aber zunächst ein einfaches Beispiel in Java an.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
public class StringTest {
	public static void main(String[] args) {
		String vsTest1 = "Hallo";
		String vsTest2 = new String("Hallo");
		String vsTest3 = new String("Erst das");
		vsTest3 = "Hallo";
 
		System.out.println("");
		System.out.println( " vsTest1: " + vsTest1 );
		System.out.println( " vsTest2: " + vsTest2 );
		System.out.println( " vsTest3: " + vsTest3 );
		System.out.println("");
 
		if ( vsTest1 == vsTest2 )
			System.out.println (" '==' Vergleich: vsTest1 und vsTest2 sind gleich ");
		else
			System.out.println (" '==' Vergleich: vsTest1 und vsTest2 sind nicht gleich ");
 
		if ( vsTest1.equals(vsTest2) )
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest2 sind gleich ");
		else
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest2 sind nicht gleich ");
		System.out.println("");
		if ( vsTest1 == vsTest3 )
			System.out.println (" '==' Vergleich: vsTest1 und vsTest3 sind gleich ");
		else
			System.out.println (" '==' Vergleich: vsTest1 und vsTest3 sind nicht gleich ");
 
		if ( vsTest1.equals(vsTest3) )
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest3 sind gleich ");
		else
			System.out.println (" 'equals' Vergleich: vsTest1 und vsTest3 sind nicht gleich ");
	}
}

Führt man dieses Programm nun aus, so erhält man die folgende Ausgabe:

1
2
3
4
5
6
7
8
9
 vsTest1: Hallo
 vsTest2: Hallo
 vsTest3: Hallo
 
 '==' Vergleich: vsTest1 und vsTest2 sind nicht gleich
 'equals' Vergleich: vsTest1 und vsTest2 sind gleich
 
 '==' Vergleich: vsTest1 und vsTest3 sind gleich
 'equals' Vergleich: vsTest1 und vsTest3 sind gleich

Für den geübten Java Programmierer wird dies jetzt keine Neuigkeit sein, für Einsteiger aber wahrscheinlich schon.
Schauen wir uns es nun aber Schritt für Schritt an.

Obwohl alle drei String Variablen den gleichen Inhalt haben (Zeile 1-3 der Ausgabe), so schlägt zumindest der „==“-Vergleich bei vsTest1 und vsTest2 fehl bzw. erkennt eine nicht Gleichheit. Wie kommt es hierzu?

Da für vsTest2 ein neues Objekt mittels ’new String(„Hallo“)‘ erzeugt wurde, schlägt die Prüfung mittels „==“-Vergleich fehl, da dieser Vergleich einfach einen Vergleich der Objekte und nicht der Werte durchführt.

Als Fazit hieraus kann man nur ziehen, dass ein Vergleich von zwei Strings immer nur mittels ‚equals‘ oder ‚compareTo‘ vornehmen sollte. Weiterführende Informationen findet man in den Links, wobei besonders Link 3 eine schöne Zusammenfassung bietet.

Weiterführende Informationen:

  1. Methode ‚equals (Object)‘
  2. Methode ‚compareTo(String)‘
  3. Java: ==, .equals(), compareTo(), and compare()

Hörempfehlung

Heute bin ich dazu gekommen, die letzte Folge von Alternativlos zu hören. Grundsätzlich sollte man sich diesen Podcast eh regelmäßig anhören.

Dieses Mal finde ich ihn aber besonders interessant, weil es einem Denkanstöße für eine alternative Sichtweise auf die aktuelle Berichterstattung rund um Wikileaks und Julian Assange gibt.